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

做网站的案例太原网站建设公司招聘

做网站的案例,太原网站建设公司招聘,网站模板好,学习网页制作学什么标量替换 (SR) 是 OpenJDK 中一项强大的优化技术#xff0c;旨在通过将复杂对象分解为更简单、更易于管理的标量变量来提高 Java 应用程序的性能。 1.前言 OpenJDK JVM 有两个即时编译器#xff0c;C1 和 C2。C2 是一种应用许多优化来生成非常高效的编译版本程序的编译器。…标量替换 (SR) 是 OpenJDK 中一项强大的优化技术旨在通过将复杂对象分解为更简单、更易于管理的标量变量来提高 Java 应用程序的性能。 1.前言 OpenJDK JVM 有两个即时编译器C1 和 C2。C2 是一种应用许多优化来生成非常高效的编译版本程序的编译器。但在深入探讨我们做出的贡献细节之前我将讨论在 C2 中实现的三个优化逃逸分析、方法内联和标量替换。 逃逸分析 (EA) 分析正在编译的代码并针对每个对象分配确定该对象是否可以在当前方法或线程之外使用。 方法内联 (MI) 是一种非常笼统的优化它用被调用方法主体的副本替换方法调用。 标量替换 (SR) 是一种优化它试图删除它认为不必要的对象分配并使用 EA 提供的信息和 MI 所做的更改来实现这一点。SR 通过转换代码以将对象的字段存储在局部变量中并使用 MI 消除对对象方法的调用从而消除对象分配。 SR 的主要好处可能是它降低了内存分配率和垃圾收集器 (GC) 的压力。但是它还有更多好处。通过删除分配该方法的代码变得更简单这可能会揭示更多的优化。所以总的来说进行标量替换是一件好事。 2.举例说明 如下述代码所示Message 类作为本文中的运行示例。此类中需要注意的重要内容是Checksum方法 和内容字段。Checksum方法对内容字段的字符进行迭代并累加它们的整数值并将其作为消息列表的校验和返回。 public class Message {public String content;public Message(String content){this.content content;}public int checkSum(){int chks 0;for(int i0;icontent.length();i){chks content.charAt(i);}return chks;} }如下述代码所示显示了CompositeChecksum方法。此方法迭代消息列表并针对每条消息调用checkSum方法。该方法累积所有消息的校验和并将其作为列表的复合校验和返回。这可能不是一段非常精心编写的代码的示例但它是编译器经常处理的代码类型尤其是在对代码应用了许多转换之后。 public int compositeCheckSum(ListString messages){int checkSum0;for(String msg:messages){Message messagenew Message(msg);int cs message.checkSum();checkSum;}return checkSum; }如下述代码所示显示了当针对Message类构造函数和checkSum方法对此方法执行 MI 时将发生的情况。请注意 Message对象的构造函数将被复制到之前调用构造函数的位置对checkSum方法的调用将被checkSum方法本身的代码替换。当然复制代码后会对其进行调整使其在目标位置仍能正常工作。 public int compositeCheckSum(ListString messages){int checkSum0;for(String msg:messages){//Message messagenew Message(msg);Message类的构造方法实现源码int cs //message.checkSum(); Message类checkSum方法实现源码checkSum;}return checkSum; }如下述代码所示显示了执行 MI后的代码。请注意对象分配仍在进行中。Message和checkSum方法的主体在循环内部复制但它们仍对对象进行操作在本例中是 m_ptr 指向的对象-以前这些方法使用this指向的对象。checkSum方法的本地chks变量现在是CompositeChecksum循环的另一个本地变量。 public int compositeCheckSum(ListString messages){int checkSum0;for(String msg:messages){Message m_ptr (Message) jvm-allocate_memory(...);m_ptr.content msg;int chks 0;for(int i0;im_ptr.content.length();i){chks m_ptr.content.charAt(i);}int cs chks;checkSum cs;}return checkSum;}如下述代码所示CompositeChecksum方法的代码仍有改进空间。在进行更多分析后C2 会发现代码中的某些赋值实际上并不需要执行。例如可以消除将msg变量赋值给content变量我们可以只迭代msg本身而不是content。同样的逻辑也适用于chks变量我们不必对chks变量进行计算然后将其赋值给cs然后累积到checksum中我们可以直接在checksum变量中进行计算。 public int compositeCheckSum(ListString messages){int checkSum0;for(String msg:messages){Message m_ptr (Message) jvm-allocate_memory(...);m_ptr.content msg;for(int i0;imsg.length();i){checkSum msg.charAt(i);}}return checkSum;}如下述代码所示经过进一步分析后C2 会注意到只有对m_ptr指向的对象进行写入没有代码从中读取。这一观察结果以及有关对象类的一些其他信息意味着此对象分配是不必要的因此可以将其删除 public int compositeCheckSum(ListString messages){int checkSum0;for(String msg:messages){for(int i0;imsg.length();i){checkSum msg.charAt(i);}}return checkSum; }对象分配移除之所以可行是因为在某个时刻没有代码从该对象读取数据。标量替换是一种优化它用直接使用最后写入对象字段的语句或值来替换对象字段的加载。还有其他优化可以达到同样的效果但它们通常适用于简单的代码片段例如此示例方法。然而标量替换可以更彻底地“查看”方法并找到可以简化这些对象字段写入的点。 3.总结 总之标量替换是 OpenJDK 中的一项关键优化技术可将复杂的对象实例转换为更简单的标量变量以提高运行时性能。通过消除堆分配的需要并减少内存开销标量替换可显著提高执行速度和资源效率。
http://www.hkea.cn/news/14482545/

相关文章:

  • 深圳网站设计公司 网络服务软件工程是干什么的
  • 帮别人做网站的公司是外包吗3d建模培训班一般多少钱
  • 网站改版设计流程大学校园网络设计方案
  • 手机网站域名和pc域名的区别Wordpress排版混乱
  • 美食网站建设的意义泰兴市住房和城乡建设局网站
  • 弹幕网站开发代码网站建设徐州
  • 左旗网站建设html网站开发代码
  • 建设企业网站需要使用哪些技术小型网站建设公司价格低
  • 网站建设流程与步骤兼职做视频的网站
  • 昌邑做网站企业网站后台
  • 班玛县公司网站建设网站建设规划方案制作
  • 文登做网站的公司苏州建设银行官方网站
  • 网站推广包年清理wordpress模板
  • 华宁县住房和城乡建设局网站美客多电商平台入驻链接
  • 网站建设的辅助软件wordpress的分类目录
  • 南坪网站建设做网站开发哪里好
  • 网站策划运营方案沈阳网站 房小二
  • 做a的网站有哪些建行官方网站 - 百度
  • 全国加盟网站大全网站开发技术报告模板
  • 网站上传该怎么做公司网站功能
  • 做暧暖ox免费网站织梦txt网站地图制作
  • 淘宝网站设计模板下载廊坊seo排名外包
  • 测网站打开的速度的网址iis5.1怎么发布网站
  • 免费在线网站建设网页版崩坏星穹铁道
  • 携程旅游电子商务网站策划书网站服务器速度对seo有什么影响
  • 学校网站建设多少钱o2o网站建设机构
  • 在线名片制作网站开发中国电信网站备案流程
  • 用自己的电脑做视频网站做一个网站需要多少费用
  • 做网站购买什么软件net网站开发参考文献
  • 水电维修在哪个网站上做推广好些电脑卸载不了wordpress