-
有何方法能减少复杂设计带来的性能损失5
系统架构为了很智能,能够根据配置适应不同情况,对请求做了大量的判断处理,及加入一些类似拦截判断的代码,尽管对需要获得的环境数据做了缓存,但是仍然面临每个请求都有几十个if判断及循环和循环体内的判断,这种做法,获得了很强的定制能力,但是经过的程序串多了,判断和干的活多了,性能却慢了。
有没有什么设计模式或思路,能减少性能损失?这些判断有没有办法合并或更高效地处理,而不是原始的if-else等?2013年9月06日 09:53
5个答案 按时间排序 按投票排序
-
1、多线程的设计,一定要避免伪共享,避免cachemiss,还有就看多线程的功底了,例如:线程局部变量(ThreadLocal等
2、数据应该在内存
3、这么多的if else可以用状态模式,系统该多重构
4、编程的功底,多了解了解jmm,在编码中对于变量的使用其实很讲究
5、其他,很多开源框架的思想。。。。2013年9月06日 15:40
-
我的建议,先看CPU的使用,肯定不是说“经过的程序串多了,判断和干的活多了,性能却慢了”,如果判断都是取内存中的数据,和请求中的数据来进行策略判断不会太慢,肯定是有些(某个或某几个)判断如果需要 IO,或读数据库,或运算导致性能下降。
应该找到是何种因素使之变慢了,对之调优。当然,方法上可以一步步屏蔽,例如先都屏蔽判断,一点点的放开,观察性能的情况,找到问题所在后,再有针对性的设计高效实现。2013年9月06日 13:47
-
有些检查是必不可少的,例如是否登录?是否有权限?这个性能优化空间不大,使用缓存或者Session。
可以优化的部分主要是对于参数、参数值以及参数组合的检查;在编码方面:
1,如果参数是通过某种格式的字符串集中传递的,例如Json,则使用字符串正则检查,平均性能会略高于if-else。
2,如果参数是相互独立的,则考虑减少for的次数--可以转换成Map再执行if-else。
设计方面:检查不一定都集中在filter中,分系统、业务、合法性三类将检查分离到各个层
面的代码中。由于成功的调用必然通过了必要的所有的检查,因此性能的优化主要集中的"必要性"上。2013年9月06日 11:22
-
针对这种if-else过多的情况,
首先考虑对大量if分支进行分类,程序进来首先判断分类,进入分类之后再具体的判断if分支,这样无效的if会少很多,甚至分几层:大分类、中分类、小分类,不要把所有的判断分支都堆砌在一起;
另外for循环里面尽量不要写过多if判断,能在外面判断的尽量在for循环外面判断;
然后可以考虑一下策略模式,一旦发现if分支过多的情况,就考虑下策略模式看是否合适。2013年9月06日 10:10
相关推荐
【MyCAT性能损失率报告1】是一份关于MyCAT数据库中间件在实际应用中的性能评估文档,主要关注在特定硬件环境下MyCAT相对于MySQL的性能损失情况。报告详细描述了测试的环境、架构、方法和一系列关键性能指标。 硬件...
然而,性能测试的重要性不容忽视,因为它能预防因系统性能问题导致的损失。基于场景的性能测试设计是一种高效且节约成本的策略,它关注于模拟真实用户的行为和操作,从而更准确地评估系统在实际使用环境下的性能。 ...
标题中的“行业资料-电子功用-减少循环空气压力损失来减少耗电量的空调装置和方法的说明分析”表明,这份文档主要关注的是空调系统中如何通过优化空气循环以降低能耗的技术。空调系统的运行效率和能源消耗是现代建筑...
为了减轻这种延迟相关的性能损失,该文档提出了几种创新的电路设计和算法优化方法。可能包括: 1. **动态延迟调整**:通过实时调整反馈路径的延迟时间,以适应变化的信道条件和系统需求,从而减少性能损失。 2. **...
这种设计方法不同于传统的性能导向设计方法,其主要目标是缩短开发周期、降低成本和复杂性,同时不牺牲性能和可靠性。 OOA方法通过面向对象架构设计,可以在一定程度上减少硬件设计的复杂性。它支持设计的模块化,...
- **维护索引**:定期进行索引的重建和重组,以保持索引的最佳状态,减少碎片化带来的性能损失。 #### 4. 优化 GROUP BY 子句 **描述**:GROUP BY 子句用于将数据分组,以便进行聚合计算。不当的使用会导致性能...
这对于离心泵的设计、选型和运行具有重要意义,有助于优化泵的效率,减少能源消耗,并在实际工况下提供更稳定的性能。 总的来说,本研究揭示了粘性对离心泵性能的显著影响,同时也探讨了不同工业标准下的换算方法。...
使用这样的软件可以显著提高工程师的工作效率,减少手动计算的错误,并且允许快速比较不同设计方案下的水头损失,从而优化水利系统的性能。用户还可以利用Excel的图表功能,可视化数据,更好地理解和解释结果。 总...
这份“行业资料-电子功用-减少泄漏功率和提高电路性能的电路配置和方法的说明分析”正是针对这一主题展开深入讨论的文献。尽管没有具体的标签信息,但从文件名我们可以推测,内容可能涵盖了一些实用的电路配置和方法...
如果需要XML消息,可以考虑使用高效的XML处理库来减少性能损失。 总的来说,构建Java高性能系统需要从多个层面进行综合优化,包括JVM配置、代码编写、数据库设计、通信机制和资源管理等方面,以确保系统在高并发和...
尖锐的前缘有利于减小流动阻力,而平滑的后缘有助于减少尾流损失,提高泵的效率。 6. 流道设计:叶轮内部的流道形状和宽度会影响液体的流动状态。合理的流道设计可以使液体在叶轮中平滑流动,减少湍流,降低水力...
本文将探讨使用Altium Designer进行高性能PCB设计时所需掌握的基本概念、设计流程和常见问题的处理方法。 ### 高性能PCB设计的基本概念 高性能PCB设计是指在高速、高密度电路设计中,确保信号完整性(Signal ...
建筑消防性能化设计是一种针对现代建筑复杂性而提出的创新设计理念,旨在弥补传统防火设计规范的不足。传统规范因修订周期长、内容不统一、对新材料新技术反应滞后等问题,难以适应大规模、高层、复杂结构的建筑需求...
通过以上的讨论,我们可以看出高性能PCB设计是一个包含多个步骤和环节的复杂过程。设计者需要具备广泛的知识,包括信号完整性分析、电源设计、电磁兼容性设计、电路仿真等。Altium Designer作为强大的EDA工具,为...
4. 冷却水腔优化设计:结合流动模拟和有限元分析,对冷却水腔进行优化设计,提高冷却效率,减少能量损失。 四、CFD-CAD设计方法的应用 应用CFD-CAD设计方法的目的是为了在实际工程设计中建立一种能够准确模拟...
通过对S_1流面上叶片的准三元设计,可以更好地控制流入叶片的水流速度分布,减少流动分离和涡旋,从而提高水能利用率和减少水力损失。 设计过程中,通常会运用流体力学软件进行数值模拟,如CFD(Computational ...
3. 锁机制:理解行锁、页锁、表锁等不同锁级别,以及MVCC(多版本并发控制)在事务处理中的作用,有助于减少锁冲突,提高并发性能。 二、MySQL架构设计 1. 主从复制:通过设置主从复制,可以实现数据备份、负载...