草庐IT

OPTIMIZATION

全部标签

java - 拥有大量小方法是否有助于 JIT 编译器优化?

在最近关于如何优化某些代码的讨论中,有人告诉我,将代码分解成许多小方法可以显着提高性能,因为JIT编译器不喜欢优化大方法。我对此不确定,因为JIT编译器本身似乎应该能够识别自包含的代码段,无论它们是否在自己的方法中。谁能证实或反驳这一说法? 最佳答案 HotspotJIT仅内联小于某个(可配置)大小的方法。所以使用更小的方法允许更多的内联,这很好。查看thispage上的各种内联选项.编辑稍微详细一点:如果一个方法很小,它将被内联,因此很少有机会因将代码拆分为小方法而受到惩罚。在某些情况下,拆分方法可能会导致更多的内联。示例(如果您

java - 拥有大量小方法是否有助于 JIT 编译器优化?

在最近关于如何优化某些代码的讨论中,有人告诉我,将代码分解成许多小方法可以显着提高性能,因为JIT编译器不喜欢优化大方法。我对此不确定,因为JIT编译器本身似乎应该能够识别自包含的代码段,无论它们是否在自己的方法中。谁能证实或反驳这一说法? 最佳答案 HotspotJIT仅内联小于某个(可配置)大小的方法。所以使用更小的方法允许更多的内联,这很好。查看thispage上的各种内联选项.编辑稍微详细一点:如果一个方法很小,它将被内联,因此很少有机会因将代码拆分为小方法而受到惩罚。在某些情况下,拆分方法可能会导致更多的内联。示例(如果您

java - 为什么将类定义为 final 会提高 JVM 性能?

引自http://sites.google.com/site/gson/gson-design-document:WhyaremostclassesinGsonmarkedasfinal?WhileGsonprovidesafairlyextensiblearchitecturebyprovidingpluggableserializersanddeserializers,Gsonclasseswerenotspecificallydesignedtobeextensible.Providingnon-finalclasseswouldhaveallowedausertolegitim

java - 为什么将类定义为 final 会提高 JVM 性能?

引自http://sites.google.com/site/gson/gson-design-document:WhyaremostclassesinGsonmarkedasfinal?WhileGsonprovidesafairlyextensiblearchitecturebyprovidingpluggableserializersanddeserializers,Gsonclasseswerenotspecificallydesignedtobeextensible.Providingnon-finalclasseswouldhaveallowedausertolegitim

java - 过时的 Java 优化技巧

Java编译器废弃了许多性能提示,尤其是Profile-guidedoptimization.例如,这些平台提供的优化可以极大地(根据来源)降低虚函数调用的成本。VM还能够进行方法内联、循环展开等。还有哪些您发现的其他性能优化技术仍在应用,但实际上已被更现代JVM中的优化机制淘汰了? 最佳答案 方法和方法参数的final修饰符对性能没有任何帮助。另外,JavaHotSpotwiki很好地概述了HotSpot使用的优化以及如何在Java代码中有效地使用它们。 关于java-过时的Java优

java - 过时的 Java 优化技巧

Java编译器废弃了许多性能提示,尤其是Profile-guidedoptimization.例如,这些平台提供的优化可以极大地(根据来源)降低虚函数调用的成本。VM还能够进行方法内联、循环展开等。还有哪些您发现的其他性能优化技术仍在应用,但实际上已被更现代JVM中的优化机制淘汰了? 最佳答案 方法和方法参数的final修饰符对性能没有任何帮助。另外,JavaHotSpotwiki很好地概述了HotSpot使用的优化以及如何在Java代码中有效地使用它们。 关于java-过时的Java优

Java 预处理器

如果我有一个boolean字段,例如:privatestaticfinalbooleanDEBUG=false;在我的代码中,我有如下语句:if(DEBUG)System.err.println("err1");Java预处理器是否只是摆脱了if语句和无法访问的代码? 最佳答案 大多数编译器都会删除该语句。例如:publicclassTest{privatestaticfinalbooleanDEBUG=false;publicstaticvoidmain(String...args){if(DEBUG){System.out.pr

Java 预处理器

如果我有一个boolean字段,例如:privatestaticfinalbooleanDEBUG=false;在我的代码中,我有如下语句:if(DEBUG)System.err.println("err1");Java预处理器是否只是摆脱了if语句和无法访问的代码? 最佳答案 大多数编译器都会删除该语句。例如:publicclassTest{privatestaticfinalbooleanDEBUG=false;publicstaticvoidmain(String...args){if(DEBUG){System.out.pr

java - 我可以在 Java 代码中做什么来优化 CPU 缓存?

在编写Java程序时,我是否会影响CPU如何利用其缓存来存储我的数据?例如,如果我有一个经常被访问的数组,如果它足够小以适合一个高速缓存行(通常在64位机器上为128字节)是否有帮助?如果我将一个经常使用的对象保持在该限制内,我可以期望它的成员使用的内存靠近在一起并保留在缓存中吗?背景:我正在构建一个压缩的digitaltree,这深受Judyarrays的启发。,在C语言中。虽然我主要关注它的节点压缩技术,但Judy将CPU缓存优化作为中心设计目标,节点类型以及在它们之间切换的启发式方法都受此影响很大。我想知道我是否也有机会获得这些好处?编辑:到目前为止,答案的一般建议是,当您离机器

java - 我可以在 Java 代码中做什么来优化 CPU 缓存?

在编写Java程序时,我是否会影响CPU如何利用其缓存来存储我的数据?例如,如果我有一个经常被访问的数组,如果它足够小以适合一个高速缓存行(通常在64位机器上为128字节)是否有帮助?如果我将一个经常使用的对象保持在该限制内,我可以期望它的成员使用的内存靠近在一起并保留在缓存中吗?背景:我正在构建一个压缩的digitaltree,这深受Judyarrays的启发。,在C语言中。虽然我主要关注它的节点压缩技术,但Judy将CPU缓存优化作为中心设计目标,节点类型以及在它们之间切换的启发式方法都受此影响很大。我想知道我是否也有机会获得这些好处?编辑:到目前为止,答案的一般建议是,当您离机器