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

相关推荐

    三角函数超入门

    图解版 三角函数入门 日本作家 内容充满趣味快速学习三角函数

    建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。

    还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。 编程环境:vs2010,语言:...

    特殊函数概论

    《特殊函数概论》较系统地讲述了一些主要的特殊函数,如超几何函数、勒让德函数、合流超几何函数、贝塞耳函数、椭圆函数、椭球谐函数、马丢(Mathieu)函数等。同时也阐明一些在讨论特殊函数时常用的概念和理论,如...

    mfc下实现回调函数

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

    CEC2014测试函数及相应函数解释说明

    CEC2014是该竞赛的一个重要年份,其测试函数集被广泛用于评估和比较各种优化算法的性能。本文将深入探讨CEC2014测试函数Part A和Part B,以及相关的M文件、函数解释和结果分析。 Part A主要包含无约束单目标优化...

    JavaScript函数式编程.pdf

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

    Benchmark functions 优化算法测试函数

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

    c++与Qt实现把定时器放进子线程中运行

    默认情况下,QTimer是在主线程中运行的,其触发的槽函数也会在主线程中执行。这在很多情况下是足够的,但如果槽函数执行时间较长或者涉及到复杂的计算,可能会导致主线程被占用,影响UI的响应速度。 QThread则是一...

    详解 Mysql中的delimiter定义及作用

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

    MATLAB核函数算法

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

    MATLAB 优化问题 26个测试函数

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

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

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

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

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

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

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

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

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

    进化算法中的测试函数 CEC05 benchmark

    2. **Schwefel函数**:这是一个高度非线性的函数,具有多个局部极小值点。对于高维问题尤其具有挑战性。 3. **Rosenbrock函数**:又称为“香蕉函数”,因其在二维情况下的形状而得名。这个函数在局部搜索上极具挑战...

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

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

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

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

    sublime显示函数列表插件

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

    遗传算法GA求函数最小值

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

Global site tag (gtag.js) - Google Analytics