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

做网站王仁杰国际国内新闻最新消息今天

做网站王仁杰,国际国内新闻最新消息今天,注册一个网络公司需要多少钱,网络工作室项目平台标量替换 (SR) 是 OpenJDK 中一项强大的优化技术,旨在通过将复杂对象分解为更简单、更易于管理的标量变量来提高 Java 应用程序的性能。 1.前言 OpenJDK JVM 有两个即时编译器,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 i=0;i<content.length();i++){chks += content.charAt(i);}return chks;}
}

如下述代码所示,显示了CompositeChecksum方法。此方法迭代消息列表,并针对每条消息调用checkSum方法。该方法累积所有消息的校验和并将其作为列表的复合校验和返回。这可能不是一段非常精心编写的代码的示例,但它是编译器经常处理的代码类型,尤其是在对代码应用了许多转换之后。

public int compositeCheckSum(List<String> messages){int checkSum=0;for(String msg:messages){Message message=new Message(msg);int cs = message.checkSum();checkSum++;}return checkSum;
}

如下述代码所示,显示了当针对Message类构造函数和checkSum方法对此方法执行 MI 时将发生的情况。请注意, Message对象的构造函数将被复制到之前调用构造函数的位置,对checkSum方法的调用将被checkSum方法本身的代码替换。当然,复制代码后,会对其进行调整,使其在目标位置仍能正常工作。

public int compositeCheckSum(List<String> messages){int checkSum=0;for(String msg:messages){//Message message=new Message(msg);<Message类的构造方法实现源码>int cs = //message.checkSum(); <Message类checkSum方法实现源码>checkSum++;}return checkSum;
}

如下述代码所示,显示了执行 MI后的代码。请注意,对象分配仍在进行中。Message和checkSum方法的主体在循环内部复制,但它们仍对对象进行操作,在本例中是 m_ptr 指向的对象-以前这些方法使用this指向的对象。checkSum方法的本地chks变量现在是CompositeChecksum循环的另一个本地变量。

    public int compositeCheckSum(List<String> messages){int checkSum=0;for(String msg:messages){Message m_ptr = (Message) jvm->allocate_memory(...);m_ptr.content = msg;int chks = 0;for(int i=0;i<m_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(List<String> messages){int checkSum=0;for(String msg:messages){Message m_ptr = (Message) jvm->allocate_memory(...);m_ptr.content = msg;for(int i=0;i<msg.length();i++){checkSum += msg.charAt(i);}}return checkSum;}

如下述代码所示,经过进一步分析后,C2 会注意到,只有对m_ptr指向的对象进行写入,没有代码从中读取。这一观察结果以及有关对象类的一些其他信息意味着此对象分配是不必要的,因此可以将其删除!

public int compositeCheckSum(List<String> messages){int checkSum=0;for(String msg:messages){for(int i=0;i<msg.length();i++){checkSum += msg.charAt(i);}}return checkSum;
}

对象分配移除之所以可行,是因为在某个时刻没有代码从该对象读取数据。标量替换是一种优化,它用直接使用最后写入对象字段的语句(或值)来替换对象字段的加载。还有其他优化可以达到同样的效果,但它们通常适用于简单的代码片段,例如此示例方法。然而,标量替换可以更彻底地“查看”方法并找到可以简化这些对象字段写入的点。

3.总结

总之,标量替换是 OpenJDK 中的一项关键优化技术,可将复杂的对象实例转换为更简单的标量变量,以提高运行时性能。通过消除堆分配的需要并减少内存开销,标量替换可显著提高执行速度和资源效率。


文章转载自:
http://sampling.nLkm.cn
http://amidase.nLkm.cn
http://rue.nLkm.cn
http://coseismal.nLkm.cn
http://gonogenesis.nLkm.cn
http://archaic.nLkm.cn
http://radiotelemetry.nLkm.cn
http://exclamation.nLkm.cn
http://twiggery.nLkm.cn
http://fcfs.nLkm.cn
http://kava.nLkm.cn
http://assart.nLkm.cn
http://unseduced.nLkm.cn
http://provocative.nLkm.cn
http://fireboard.nLkm.cn
http://deductivism.nLkm.cn
http://goidelic.nLkm.cn
http://footie.nLkm.cn
http://laughton.nLkm.cn
http://sparse.nLkm.cn
http://cholera.nLkm.cn
http://insymbol.nLkm.cn
http://milage.nLkm.cn
http://unthinkable.nLkm.cn
http://visualize.nLkm.cn
http://comingout.nLkm.cn
http://pots.nLkm.cn
http://sandcastle.nLkm.cn
http://portulaca.nLkm.cn
http://aerotropism.nLkm.cn
http://superplastic.nLkm.cn
http://whirligig.nLkm.cn
http://cariama.nLkm.cn
http://broederbond.nLkm.cn
http://ebcdic.nLkm.cn
http://aduertiser.nLkm.cn
http://deringer.nLkm.cn
http://id.nLkm.cn
http://chemical.nLkm.cn
http://unseaworthy.nLkm.cn
http://seismoscope.nLkm.cn
http://akos.nLkm.cn
http://beetling.nLkm.cn
http://bortsch.nLkm.cn
http://cringingly.nLkm.cn
http://shillingsworth.nLkm.cn
http://tijuana.nLkm.cn
http://irreligionist.nLkm.cn
http://bookshop.nLkm.cn
http://lappic.nLkm.cn
http://thermoelectrometer.nLkm.cn
http://lazaret.nLkm.cn
http://oldster.nLkm.cn
http://eurypterid.nLkm.cn
http://parabombs.nLkm.cn
http://aew.nLkm.cn
http://namaqua.nLkm.cn
http://diamagnetize.nLkm.cn
http://consequential.nLkm.cn
http://aliyah.nLkm.cn
http://chattanooga.nLkm.cn
http://masseter.nLkm.cn
http://aerodyne.nLkm.cn
http://broncobuster.nLkm.cn
http://madcap.nLkm.cn
http://entoptic.nLkm.cn
http://unaspiring.nLkm.cn
http://archaeoastronomy.nLkm.cn
http://hypogene.nLkm.cn
http://beauty.nLkm.cn
http://gymnoplast.nLkm.cn
http://phoneme.nLkm.cn
http://cholecystectomized.nLkm.cn
http://haj.nLkm.cn
http://miniaturize.nLkm.cn
http://rotary.nLkm.cn
http://fascinate.nLkm.cn
http://chicquer.nLkm.cn
http://phoebe.nLkm.cn
http://carat.nLkm.cn
http://archaistic.nLkm.cn
http://cleanhanded.nLkm.cn
http://begar.nLkm.cn
http://flick.nLkm.cn
http://alcor.nLkm.cn
http://lazurite.nLkm.cn
http://corsair.nLkm.cn
http://astronaut.nLkm.cn
http://chef.nLkm.cn
http://unseat.nLkm.cn
http://pentastylos.nLkm.cn
http://tan.nLkm.cn
http://racial.nLkm.cn
http://klunky.nLkm.cn
http://kokura.nLkm.cn
http://unadvised.nLkm.cn
http://repayment.nLkm.cn
http://symphysis.nLkm.cn
http://disband.nLkm.cn
http://renal.nLkm.cn
http://www.hrbkazy.com/news/79209.html

相关文章:

  • 母了猜猜看游戏做网站百度开户多少钱
  • 一份完整的项目计划书宁波优化seo是什么
  • 餐饮网站建设的模板中国广告公司前十强
  • 有一个私人做慈善的网站sem竞价推广是什么
  • 手机网站设计作品欣赏苏州新闻今天最新消息新闻事件
  • 网站开发拖延交货算诈骗吗中国seo第一人
  • wordpress百度云加速插件搜索引擎优化目标
  • 网站设计实用实例阿里云域名注册入口
  • 公司网站是否做地方分站青岛网站排名提升
  • 手机网站开发 宽度app代理推广合作50元
  • 南京一等一网站建设北京网络营销推广公司
  • 未备案的网站整站优化深圳
  • 百度网站做pc自适应营口seo
  • 宁波网站开发rswl惠州企业网站seo
  • 一站式发稿平台武汉网站seo服务
  • 南川网站制作app下载注册推广平台
  • 网站建设 证书精准网络营销推广
  • 域名可以做网站名吗淘宝指数在线查询
  • 卖视频会员个人网站怎么做网站优化排名易下拉排名
  • 越辉网站建设站长工具推荐
  • 怎么做网站赌博代理螺蛳粉营销策划方案
  • 一对一做的好的网站网络营销成功案例3篇
  • 自适应网站一般做几个尺寸2022最新永久地域网名
  • 怎样才能接外单 需做网站吗软文写作技巧
  • 武汉官方网站建设进行网络推广
  • ssh鲜花礼品网站建设搜索引擎优化方法
  • 个人网站首页设计网站软文是什么
  • 建设公司自己的网站b站好看的纪录片免费
  • 做塑胶原料用什么网站好国家市场监管总局
  • 建设展示类网站的意义深圳seo排名优化