内存读取速度与简单的算术和条件

时间:2012-04-19 11:22:17

标签: java performance lookup-tables

我正在编写一个程序,无论如何都需要进行大量的数字处理。

通常,我可以选择通过{3-4加法或乘法和if-else检查或两个,也许是大约五个数字}计算一个值,或者从查找中读取值表。一切都是int。

与这种简单的操作相比,内存读取的速度有多快,粗略?

2 个答案:

答案 0 :(得分:3)

这是不可能以任何有意义的方式回答的。这取决于实际代码,以及您正在使用的平台。作为一般规则,如果存在可能有效的简单本地优化,JIT编译器将为您执行这些优化。

您最好执行以下操作:

  1. 以简单自然的方式编写程序。
  2. 让它发挥作用。
  3. 在典型的输入数据集/问题上运行它。如果它足够快,那么停止。
  4. 在执行典型输入数据集/问题时对代码进行概要分析。
  5. 使用分析结果来识别代码中最关键的热点。
  6. 检查代码,并确定可能的优化。
  7. 对优化进行编码并重新运行分析。它改善了吗?
  8. 从步骤3开始重复,直到程序运行得足够快,或者您已经用完了可能的优化。

  9. 查找表的问题在于您正在缩短空间时间,空间使用量取决于应用程序使用的输入组合的数量。查找表方法只在有限的情况下得到回报。

答案 1 :(得分:3)

性能调优的基本原理; “别猜,测量它”