gpt4 book ai didi

java - 快速数字比较的最佳原始类型?

转载 作者:行者123 更新时间:2023-12-02 02:03:58 24 4
gpt4 key购买 nike

我有一个函数可以进行数亿次迭代,试图找到一组给定可能性的最佳组合。我的所有数据都是预先计算好的,几乎所有的算术都很简单>=<=这些预先计算的值的比较。

我想知道在进行这个简单比较时使用某些基本类型( intlongdouble )是否有优势。

我知道我可以去运行一个测试来看看哪个是“最好的”,但理解潜在的推理也很重要。例如,也许 int最容易比较,因为它占用更少的内存,或者可能 double的浮点更容易知道该值是 10 的幂,这在某些情况下可以加快比较速度。我有兴趣了解这些基础知识,但简单的测试无法告诉我这一点。

最佳答案

这是过早的优化。您应该选择一种数据类型,基于它进行实现,并使用实际实现运行性能基准测试,而不是比较特定类型的数万个随机值的一些虚构测试。

使用特定实现进行测试的原因是,有许多因素对速度的影响比原始比较的时间要大得多:

  • 缓存命中率 - 访问内存比访问缓存值慢几倍。访问大量数据时重新构造循环可以在很大程度上加快程序速度,而无需更改程序执行的原始比较的数量
  • 分支预测 - 保持 CPU 管道正常运行非常重要。如果您的循环和数据的结构方式可以优化正确分支预测的数量,那么您的代码的运行速度比具有大量错误分支预测的代码快得多

在实现实际算法之前,无法测量任何这些指标。一旦优化了缓存和分支的实际实现,切换底层数据类型就变得相对容易。

关于java - 快速数字比较的最佳原始类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51116575/

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