gpt4 book ai didi

java - 优化 Long.bitCount

转载 作者:IT老高 更新时间:2023-10-28 21:19:36 25 4
gpt4 key购买 nike

我有一个程序正在对 Long.bitCount() 进行大量调用,如此之多以至于它在一个 CPU 内核上占用了 33% 的周期。有没有比 Sun JDK 版本更快的实现方式?

我试过了:

  • This algorithm (我认为这正是 JDK 的实现方式)
  • 查找 28 和 222 之间的各种大小的表(一次查看几位并添加结果)

但我没有比使用手动展开循环(大约 27% 的 CPU)的 216 条目查找表做得更好的了。
这还能如何针对 Java 进行优化?


注意:这个问题是关于 Java 特定的优化,但是 this similar (language-agnostic) question还有很多其他算法。

最佳答案

如果您使用的是最新的 x86 CPU,则有一个相关说明,popcnt。

在最近的 Java 版本中,Long.bitCount() 使用此指令。只需使用 -XX:+UsePopCountInstruction(这是最近版本中的默认值)

但是,在 JRE 6.0_u18 到 7.0_u5 中存在一些错误: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7063674

关于java - 优化 Long.bitCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4839128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com