当前位置: 首页 > news >正文

长春模板建站代理wordpress 写文章权限

长春模板建站代理,wordpress 写文章权限,网站建设推广注册公司,做汽车介绍视频的网站神话 用加号运算符连接两个字符串是万恶之源 -匿名Java开发人员 注意 #xff1a;此处讨论的测试的源代码可以在Github上找到 从大学时代起#xff0c;我就学会了使用运算符将Java中的String连接视为致命的性能缺陷。 最近#xff0c;在Backbase R#xff06;D上进行了一… 神话 用加号运算符连接两个字符串是万恶之源 -匿名Java开发人员 注意 此处讨论的测试的源代码可以在Github上找到 从大学时代起我就学会了使用运算符将Java中的String连接视为致命的性能缺陷。 最近在Backbase RD上进行了一次内部审查其中每当您使用plus运算符连接String时由于在javac使用StringBuilder javac 这种重复的口头禅就被当作神话了。 我准备证明这一点并验证不同环境下的现实。 考试 依靠编译器优化String串联意味着根据您采用的JDK供应商情况可能会发生重大变化。 就我日常工作所需的平台支持而言应考虑三个主要供应商 Oracle JDK IBM JDK ECJ-仅适用于开发人员 此外尽管我们正式支持Java 5至6但我们也正在考虑为我们的产品提供Java 7支持在这三个供应商的基础上增加了另外三层的间接。 为了 懒惰 为简单起见 ecj编译的字节码将使用单个JDK即Oracle JDK7运行。 我准备了安装了上述所有JDK的Virtualbox VM然后开发了一些类来表示三种不同的串联方法根据特定的测试用例每种方法调用总计三至四个串联。 每个测试回合都运行测试类数千次每个测试用例总共进行100回合。 相同的VM用于运行同一测试用例的所有回合并跨不同的测试用例重新启动所有这些都使Java运行时能够执行所有可能的优化而不会以任何方式影响其他测试用例。 缺省选项用于启动所有JVM。 可以在基准运行程序脚本中找到更多详细信息。 编码 Github上提供了测试用例和测试套件的完整代码。 产生了以下不同的测试用例以测量String串联的性能差异加上直接使用StringBuilder // String concat with plus String result const1 base; result result const2;// String concat with a StringBuilder new StringBuilder().append(const1).append(base).append(const2).append(append).toString(); }//String concat with an initialized StringBuilder new StringBuilder(const1).append(base).append(const2).append(append).toString(); 一般的想法是在变量的常量String的开头和结尾都提供一个串联。 后两种情况两者都显式使用StringBuilder之间的区别在于后者使用1-arg构造函数该构造函数使用结果的初始部分初始化构建器。 结果 足够多的讨论您可以在下面查看生成的图形其中每个数据点对应一个测试回合例如同一测试类的1000次执行。 随后将讨论结果以及更多细节。 讨论 甲骨文JKD5显然是输家与其他甲骨文相比似乎处于B联赛。 但这实际上不是本练习的范围因此我们暂时将其忽略。 也就是说我在上图中观察到了另外两个有趣的地方。 首先是使用加号运算符与使用显式StringBuilder通常确实存在很大的差异 尤其是如果您使用的Oracle Java5的执行树时间比其他工作人员差的话。 第二个观察结果是虽然对于大多数JDK来说显式StringBuilder通常提供的速度是常规plus运算符的两倍但IBM JDK6似乎不会遭受任何性能损失它总是平均需要25ms才能完成任务。所有测试用例。 仔细查看生成的字节码会发现一些有趣的细节 字节码 注意反编译类也可以在Github上使用。在所有可能的JDK中即使存在加号 StringBuilders 始终用于实现String串联。 而且在所有厂商和版本中同一测试用例几乎没有任何区别 。 唯一的区别是ecj 这是唯一巧妙地优化CatPlus测试用例以调用StringBuilder的1-arg构造函数而不是0-arg版本的方法。 比较生成的字节码可以揭示在不同场景下可能影响性能的因素 与plus串联时只要发生串联就会创建StringBuilder新实例 。 由于构造函数的无用调用这很容易导致性能下降并且由于丢弃实例而给垃圾收集器带来更多压力 如果且仅当您在原始代码中以这种方式编写StringBuilder 编译器才会照搬您并且仅使用String的1-arg构造函数来初始化StringBuilder 。 这分别导致对CatSB和CatSB2的StringBuilder.append四个和三个调用。 结论 字节码分析为原始问题提供了最终答案。 您是否需要显式使用StringBuilder来提高性能 是上面的图清楚地表明除非使用IBM JDK6运行时否则在使用plus运算符时您将损失50的性能尽管在显式StringBuilder时它在候选对象上的表现会稍差一些。 同样看到JIT优化如何影响整体性能也很有趣例如即使在两个显式StringBuilder测试用例之间存在不同的字节码从长远来看最终结果也绝对相同。 参考 Java StringBuilder神话从我们的JCG合作伙伴 Carlo Sciolla在Skuro博客中揭穿 。 翻译自: https://www.javacodegeeks.com/2013/03/java-stringbuilder-myth-debunked.html
http://www.zqtcl.cn/news/580117/

相关文章:

  • 平台型网站制作网站建设张世勇
  • 网站建设云南网页游戏大厅都有哪些
  • 网站建设与管理报告书郑州建设银行网站
  • 做网站网页的人是不是思维公司网站建设包括
  • 网站建设都包括哪些网站后台如何上传文件
  • 网站便民服务平台怎么做迁安做网站中的cms开发
  • 做外贸比较好的网站怎么把网站做的好看
  • 有没有在淘宝找人做网站被骗过的台州市环保局网站开发区
  • 公司外文网站制作河南住房和城乡建设厅网站
  • 东莞做网站公司有哪些代码网站推荐
  • 棋类游戏网站开发网站首页顶部图片尺寸
  • 工信部如何查网站备案大连网络推广广告代理
  • 网站建设基本流程心得wordpress首页截断
  • 网站包括哪些内容网站开发的相关技能
  • 百度竞价 百度流量 网站权重qq推广
  • 重庆网站建设总结WordPress简单百度站长插件
  • pc网站转换成微网站工作室推广网站
  • 嘉兴优化网站公司做水果生意去哪个网站
  • 青岛知名网站建设公司排名wordpress商场插件
  • 设计网站猪八戒自己制作logo免费生成器
  • 深圳万齐创享网站建设网站建设基本教程
  • 聊城做网站信息建设工程合同可以分为
  • 网站设计 注意做筹款的网站需要什么资质
  • 家居网站建设费用国土局网站建设经验
  • 企业网站开发教程网站建设更改
  • 违法网站怎么做安全wordpress自定义应用
  • 四平英文网站建设wordpress添加特效
  • 如何在手机上制作网站企业网站 微博模块
  • 网站内容规范网站建设建设公司哪家好
  • 深圳网站制作公司地址如何制作手机版网站