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

品牌网站建设怎么样国内国际时事写实记录50字配图片

品牌网站建设怎么样,国内国际时事写实记录50字配图片,微信小商店分销功能,成都网络营销公司哪个好很多讲Java优化的文章都会强调对String拼接的优化。倒不用特意记#xff0c;本质上在于对不可变类优势和劣势的理解上。需要关注的是编译器对String拼接做出的优化#xff0c;在简单场景下的性能能够与StringBuilder相当#xff0c;复杂场景下仍然有较大的性能问题。网上关于…很多讲Java优化的文章都会强调对String拼接的优化。倒不用特意记本质上在于对不可变类优势和劣势的理解上。需要关注的是编译器对String拼接做出的优化在简单场景下的性能能够与StringBuilder相当复杂场景下仍然有较大的性能问题。网上关于这一问题讲的非常乱如果我讲的有什么纰漏也欢迎指正。本文用到了反编译工具jad。在查阅网上关于String拼接操作的优化时发现了这个工具能同时反编译出来源码和字节码亲测好用点我下载。String拼接的性能问题优化之前每次用””拼接都会生成一个新的String。特别在循环拼接字符串的场景下性能损失是极其严重的空间浪费每次拼接的结果都需要创建新的不可变类时间浪费创建的新不可变类需要初始化产生大量“短命”垃圾影响 young gc甚至full gc所谓简单场景简单场景和复杂场景是我乱起的名字帮助理解编译器的优化方案。简单场景可理解为在一句中完成拼接int i  0;String sentence  “Hello”  “world”  String.valueOf(i)  “”;System.out.println(sentence);利用jad可看到优化结果int i  0;String sentence  (new StringBuilder()).append(“Hello”).append(“world”).append(String.valueOf(i)).append(“”).toString();System.out.println(sentence);是不是很神奇竟然把String的拼接操作优化成了StringBuilder#append()此时可以认为已经将简单场景的空间性能、时间性能优化到最优(仅针对String拼接操作而言)看起来编译器已经完成了必要的优化。你可以测试一下简单场景下的性能能够与StringBuilder相当。但是——“但是”以前的都是废话——编译器的优化对于复杂场景的帮助却很有限了。所谓复杂场景所谓复杂场景可理解为“编译器不确定(或很难确定于是不做分析)要进行多少次字符串拼接后才需要转换回String”。可能表述不准确理解个大概就好。我们分析一个最简单的复杂场景String sentence  “”;for (int i  0; i 理想的优化方案当然无论什么场景程序猿都可以手动优化在性能敏感的场景使用StringBuilder完成拼接。在性能不敏感的场景使用更方便的String。PS别吐槽这样的API设计是合理的在合适的地方做合适的事。理想目标是把这件事交给javac和JIT设定一个拼接次数的阈值超过阈值就启动优化(对于javac有一个编译期的阈值JIT有一个运行期的阈值以分阶段优化)。优化时在拼接前生成StringBuilder对象将拼接操作换成StringBuilder#append()继续使用该对象直至“需要”String对象时使用StringBuilder#toString()“懒加载”新的String对象。该优化方案的难度在于代码分析机器很难知道到底何时“需要”String对象所以也很难在合适的位置注入代码完成“懒加载”。虽然很难实现但还是给出理想的优化结果以供实际方案对比String sentence  “”;StringBuilder sentenceSB  new StringBuilder(sentence);for (int i  0; i 实际的优化方案利用jad查看实际的优化结果String sentence  “”;for (int i  0; i 可以看到实际上编译器的优化只能达到简单场景的最优仅优化字符串拼接的一句。这种优化程度对于上述复杂场景的性能提升很有限循环时还是会生成大量短命垃圾特别是字符串拼接到很大的时候空间和时间上都是致命的。通过对理想方案的分析我们也能理解编译器优化的无奈之处编译器无法(或很难)通过代码分析判断何时是最晚进行懒加载的时机。为什么呢我们将代码换个形式可能更容易理解String sentence  “”;for (int i  0; i 观察第3行的代码等式右侧引用了sentence。我肉眼知道这句话只完成了字符串拼接机器呢最起码现在的机器还很难通过代码判断。待以后将人工智能与编译优化结合起来就算只能以90%的概率完成优化也是非常cool的。总结这个问题我没有做性能测试。其实也没必要过于深究与其让编译器以隐晦的方式完成优化不如用代码进行主动、清晰的优化让代码能够“自解释”。那么如果需要优化使用StringBuilder吧。
http://www.zqtcl.cn/news/118930/

相关文章:

  • 做国际贸易做什么网站遵义做网站优化
  • 电商平台正在建设中网站页面提示开发手机网站用什么好
  • 电商设计素材网站推荐百度云app下载安装
  • 网站怎样和首页做链接地址百度怎么打广告在首页
  • 眉县做网站网站开发技术可行性分析
  • 深圳求职网站哪个好网站上面的在线咨询是怎么做的
  • 做饰品一般用什么网站做首饰凡客数据
  • 工业电商做网站怎么样wordpress 韩国 主题
  • 网站的优化从几个方面网站建设需注意哪些事项
  • 网站建设的技术有哪些内容东莞网站建设最优
  • 网站建设税费很多网站没有后台
  • 百度云主机上装网站flash怎么做网页
  • 外贸网站能用阿里云吗哔哩哔哩网页版打不开
  • 南宁月嫂网站建设财经直播的网站开发一个多少钱
  • 宁波网站的建设百度网盟推广 网站
  • 大连城乡建设局网站青岛网站建设外贸
  • 石家庄网站建设招聘珠海快速网站建设
  • 网站建设代理ai制作网页
  • 微网站平台怎样做网站wordpress侧栏跟随
  • 手机网站建设好吗湖南省专业建设公司网站的机构
  • 网站代码 字体好用的cms网站
  • 美食网站首页设计用手机怎么看自己做的网站
  • 平台类网站开发怎样做永久网站二维码
  • 网站开发客户挖掘php网站开发心得3500字
  • 检察院做网站的目的青岛网站推广优化
  • dede替换网站模板定制网站建设的流程
  • 天津专业网站制作网站开发模板
  • 做二手车网站需要什么怎样建立门户网站
  • 宁波做网站首荐荣盛网络网站建设太仓
  • 购物网站公司要花费多少钱wordpress 菜单 字体加粗