0 0

一个函数执行超慢,百思不得其解10

@Override
    public String saveRole(Role role) 
    {
        String result = "-1";
        String token = tokens.get(role.getUsername());
        RoleInfo info = userInfos.get(token);
        if(info != null)
        {
            info.role = role;
            this.savaToCacheThread.add(role);
            result = "0";
        }
        return result;
    }


把info.role = role;注释掉。函数瞬间完成,否则超慢(5000次20秒)。。
函数入参是从socket反序列化过来的。
求解啊。。。。
问题补充
ptma 写道
你该检查一下 savaToCacheThread 中的 add 方法

这个方法没问题。我测试过的
问题补充
cobb.chan 写道
ztiny 写道
info.role = role; 

改成
info.setRole(role);

正解...


用方法哪有直接赋值的快。。。。
问题补充
光明左使 写道
用了hibernate? 打开sql显示,看看所有的sql输出,是不是有什么语句造成了速度慢?

和SQL没关系啊。。。
问题补充
抛出异常的爱 写道
200TPS
对于只读操作已经很慢了
//RoleInfo info = userInfos.get(token);//把这句注释
info = new info();//换成这个
如果变慢就应该是实体BEAN的托管问题。

最好的办法是改变缓存策略
把login时更换token操作先存入缓存。
再批量异步存入数据库中


问题是我没有用任何的框架。。。userInfos里面记录了登录中的用户。。不能新new一个啊。。。我现在还只有缓存层。没有用到数据库。。
2012年6月25日 10:19

5个答案 按时间排序 按投票排序

0 0

写个单元测试,跑下
vistualVM 看下内存消耗

2012年6月27日 21:55
0 0

引用
否则超慢(5000次20秒)

每次4毫秒,这也叫超慢?

2012年6月25日 15:02
0 0

貌似楼主放在缓存里的是role对象。
那么为什么还要执行info.role = role;  呢
不太理解。

2012年6月25日 11:45
0 0

我比较同意cobb.chan的观点,要改成.info.setRole(role);因为中间可能涉及到类型转换的问题

2012年6月25日 11:36
0 0

debug模式下,比较一下role那行被注释掉和没被注释掉 一行一行执行info.role = role; 
    this.savaToCacheThread.add(role);这两句函数的执行过程 看看有啥区别。。。。

再琢磨琢磨代码具体那个地方慢了。。

2012年6月25日 11:06

相关推荐

    Delphi的一个超级函数代码库

    一个快速字符串处理单元,一些函数用汇编写的,处理速度比DELPHI本身的字符串处理快很多,不过不支持WideString类型。 Idpacker.pas  压缩文件类型检测单元。 ZLibEx.pas  纯Pascal代码的快速压缩解压单元,压缩率...

    mfc下实现回调函数

    回调函数是一种函数,它的地址被存储在另一个函数中,当那个函数执行到一定阶段时,会调用这个保存的地址,即回调函数。在MFC中,回调函数常常用于处理消息、事件或者在多线程编程中通信。 实现MFC下的回调函数有...

    提供Qt中快速多次发射信号与耗时槽函数的链接解决方案

    默认情况下,信号和槽之间的连接是同步的,这意味着当一个信号被触发时,与其相连的所有槽函数都会立即执行。如果槽函数执行时间过长,可能会阻塞其他信号的处理,导致性能下降。 解决方案一:异步信号槽连接 Qt...

    JavaScript函数式编程.pdf

    柯里化是一种将使用多个参数的函数转换成一系列使用单一参数的函数的技术。在JavaScript中,柯里化通过创建多个闭包来实现。柯里化有助于参数复用和延迟计算,使得函数调用更加灵活。 7. 组合(Composition) ...

    Benchmark functions 优化算法测试函数

    8. **Rosenbrock.m**:Rosenbrock函数,又称香蕉函数,是一个著名的非凸、单谷函数,其特点是有一个长长的、狭窄的山谷,需要算法有良好的曲面追踪能力。 9. **Griewank.m**:Griewank函数是一个非凸、多模态函数,...

    详解 Mysql中的delimiter定义及作用

    学过oracle的人,再来学mysql就会感到很奇怪,百思不得其解。 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。 默认情况下,delimiter是分号(;) 。 在命令行客户端中,如果有一行命令以...

    MATLAB核函数算法

    在机器学习领域,核函数(Kernel Function)是一种强大的工具,用于将原始数据转换到高维空间,以便在非线性可分的情况下实现分类或回归。MATLAB作为一种强大的数学计算软件,提供了丰富的核函数库,使得研究人员和...

    MATLAB 优化问题 26个测试函数

    这个脚本可能包括循环结构,逐一执行每个测试函数,并记录或显示优化过程中的关键信息,如最优解、迭代次数和计算时间。 "func_plot.m"可能用于绘制这些测试函数的图形,帮助我们直观地理解函数的形状和特性。这...

    C语言标准函数库详解.pdf

    在C语言标准函数库中,有多个头文件,每个头文件都提供了一组相关的函数。这些头文件包括:、、、、、、、、、、、、等。 每个头文件都提供了不同的函数,例如:头文件提供了断言函数assert(),用于在程序中添加...

    多目标优化问题经典测试函数

    4. **运行优化过程**:调用MATLAB优化函数,传入目标函数、约束条件和初始解,执行优化过程。 5. **分析结果**:获取优化结果后,需要对得到的Pareto前沿进行分析,评估算法的性能。 通过理解和运用这些多目标优化...

    VC++ DLL 实现回调函数的实例

    回调函数则是编程中一种常见的设计模式,它允许函数将控制权返回给调用者,使得调用者可以在适当的时候执行特定的处理逻辑。在VC++中,将回调函数实现在DLL中,可以提供更加灵活的跨模块通信方式。 首先,我们需要...

    在simulink中应用s函数的一个简单实例

    在本实例中,我们将探讨如何在Simulink中应用S函数来设计一个简单的连续系统。 首先,理解S函数的基本结构至关重要。S函数分为两种类型:MATLAB S函数和C/C++ S函数。MATLAB S函数直接用MATLAB脚本编写,适合快速...

    遗传算法寻找函数最优解(最小值)

    通过遗传算法,求解函数的最优解,其特点是,运算速度快,运行结果精确

    最优化 外点罚函数 实例 有matlab程序.zip

    最优化是数学和计算机科学中的一个关键领域,其目标是找到一个函数的全局最小值或最大值。在解决复杂的优化问题时,外点罚函数法是一种广泛应用的技术。本实例主要探讨了如何使用MATLAB编程来实现这一方法。 外点罚...

    DLL函数查看工具

    标题中的“DLL函数查看工具”指的是一个专门用来查看动态链接库(DLL)文件中包含的函数的软件。DLL是Windows操作系统中的一种共享库机制,它允许多个程序共享同一段代码和数据,从而节省内存资源并方便软件开发。...

    遗传算法的适应度函数构造

    在遗传算法中,适应度函数是度量个体在优化计算中有可能达到或接近于最优解的优良程度。适应度较高的个体遗传到下一代的概率就较大;而适应度较低的个体遗传到下一代的概率就相对小一些。适应度函数的设计直接影响...

    Windows API 函数参考手册

    书中详细介绍了每一个Win32 API函数的使用方法,其中着重介绍其原型表示、函数说明、参数说明、注意事项、相应头文件(.H)、链接库(.LIB或.DLL)和典型示例。对于每个函数《Windows API 函数参考手册》给出了相应...

    sublime显示函数列表插件

    ctags可以解析多种编程语言的语法,生成一个索引文件,使得编辑器能够快速定位到函数、类、变量等编程元素的定义位置。因此,理论上FuncPreview可以通过适当的配置和扩展,以支持ctags支持的所有语言,如C、C++、...

    遗传算法GA求函数最小值

    在“计算智能函数最小值”这个案例中,我们可以设定一个目标函数,如二次函数、指数函数或复杂数学函数,然后使用遗传算法来找到该函数的最小值。通过调整种群规模、交叉概率、变异概率等参数,观察算法在不同设置下...

    C++画数学函数图象

    1. vs2008里弄了一个画数学函数的类,基本的函数都可以画,当然复杂的也可以,只是函数本身需要调用者设计,已经变量的范围 2. 最后的图象提供两种方式输出,一个是bmp文件,一个是gif图象,gif需要注意它的256种...

Global site tag (gtag.js) - Google Analytics