加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

不要被直觉误导 关于Java机能的9个谬论

发布时间:2017-07-22 11:06:11 所属栏目:教程 来源:臧秀涛编译
导读:Java的机能有某种黑邪术之称。部门缘故起因在于Java平台很是伟大,许多环境下题目难以定位。然而在汗青上尚有一种趋势,人们靠伶俐和履素来研究Java机能,而不是靠应用统计和实证推理。在这篇文章中,我但愿拆穿一些最谬妄的技能神话。

  4.算法慢是机能题目的最常见缘故起因

  在开拓者之间有一个很常见的认知错误(平凡公共也是云云),即以为体系中他们节制的那部门很重要。

  在切磋Java机能时,这种认知错误也有所浮现:Java开拓者以为算法的质量是机能题目的首要缘故起因。开拓者思量的是代码,因此他们天然会方向于思量本身的算法。

  现实上在处理赏罚一系列实际中的机能题目时,人们发明算法计划是基础题目的几率不敷10%。

  相反,与算法对比,垃圾网络、数据库会见和设置错误导致应用措施迟钝的也许性更大。

  大部门应用处理赏罚的数据量相对较小,因此,纵然首要算法服从不高,凡是也不会导致严峻的机能题目。可以必定,我们的算法不是最优的;尽量云云,算法带来的机能题目照旧算小的,更多机能题目是应用栈的其他部门导致的。

  因此我们的最佳提议是,行使现实出产数据来揭开机能题目的真正缘故起因。要丈量机能数据,而不是凭空揣摩!

  5.缓存可以办理全部题目

  “计较机科学中的全部题目都可以通过引入一此中间层来办理。”

  David Wheeler的这句措施员格言(在互联网上,这句话至少还被以为是其他两位计较机科学家说的)非经常见,尤其是在Web开拓者之中很风行。

  假如未能透彻领略现有的架构,并且说明也已搁浅,每每就是“缓存可以办理全部题目”这种谬论昂首的时辰了。

  在开拓者看来,与其处理赏罚吓人的现有体系,还不如在前面加一层缓存,将现有体系潜匿起来,以此等候最好的环境。无疑,这种方法只是让整体架构更伟大了,当下一个接办的开拓者规划相识体系近况时,环境会更糟糕。

  局限复杂、计划拙劣的体系每每缺乏整体的计划,是一次一行代码、一个子体系这样写出来的。然而许多环境下,简化并重构架构会带来更好的机能,并且险些老是更轻易让人领略。

  以是当评估是否真的有须要插手缓存时,应该先打算网络一些根基的行使统计信息(好比掷中率和未掷中率等),以此证明缓存层带来的真正代价。

  6.全部应用都必要存眷Stop-The-World题目

  Java平台存在一个无法改变的究竟:为运行垃圾网络,全部应用线程必需周期性搁浅。偶然这被看成Java的一个严峻弱点,纵然没有任何真凭实据。

  实证研究表白,假如数字数据(如价值颠簸)变革的频率高出200毫秒一次,人就无法正常感知了。

  应用首要是给人用的,因此我们有一个有效的履历法例,200毫秒或低于200毫秒的Stop-The-World(STW)凡是是没有影响的。有些应用也许有更高的要求(如流媒体),但许多GUI应用是不必要的。

  少数应用(好比低耽误买卖营业或机器节制体系)无法接管200毫秒的搁浅。除非编写的就是这类应用,不然用户根基感受不到垃圾网络器的影响。

  值得一提的是,在应用线程数目高出物理核数的任何体系中,操纵体系必需节制对CPU的分时会见。Stop-The-World听着可骇,但现实上任何应用(不管是JVM照旧其他应用)都要面临稀缺计较资源的争用题目。

  假如不去丈量,JVM对应用机能有何附加影响是不清晰的。

  总之,请打开GC日记,以此来确定停即刻间是否真的影响了应用。通过阐嫡志来确定停即刻间,这里既可以手工说明,也可以操作剧本或器材说明。然后再鉴定它们是否真的给应用于带来了题目。最重要的是,问本身一个要害的题目:确实有效户诉苦吗?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读