java和golang性能_Java本质和性能
java和golang性能
最初的問題是如何計(jì)算二進(jìn)制數(shù)中1的個(gè)數(shù)? 我包含了使用Integer.bitCount()的性能比較,該性能可以轉(zhuǎn)換為固有特性,即單個(gè)機(jī)器代碼指令POPCNT和執(zhí)行相同功能的Java代碼。
題
如何計(jì)算二進(jìn)制數(shù)中1的個(gè)數(shù)?
假設(shè)我有數(shù)字45,它等于二進(jìn)制數(shù)101101,其中有4 1。 編寫算法來執(zhí)行此操作的最有效方法是什么?
回答
與其編寫算法來執(zhí)行此操作,不如使用內(nèi)置函數(shù)。 Integer.bitCount()
使之特別有效的原因是JVM可以將其視為內(nèi)部函數(shù)。 即在支持它的平臺(tái)(例如Intel / AMD)上用單個(gè)機(jī)器代碼指令識(shí)別并替換整個(gè)事物
演示此優(yōu)化的有效性
版畫
Intrinsic: Each bit count took 0.4 ns, countBits=33285996513 Copy of same code: Each bit count took 2.4 ns, countBits=33285996513 使用固有版本和循環(huán)的每個(gè)位數(shù)平均僅需要0.4納秒。 使用相同代碼的副本要花費(fèi)6倍的時(shí)間(獲得相同的結(jié)果)
參考: Vanilla Java博客上來自我們JCG合作伙伴 Peter Lawrey的Java Intrinsics and Performance 。
翻譯自: https://www.javacodegeeks.com/2012/11/java-intrinsics-and-performance.html
java和golang性能
總結(jié)
以上是生活随笔為你收集整理的java和golang性能_Java本质和性能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ae合成区域快捷键(AE新建合成快捷键)
- 下一篇: 使用自定义线程池处理并行数据库流