【发布时间】:2015-08-12 18:05:34
【问题描述】:
我正在测试一种新方法来替换我的旧方法并进行了一些速度测试。 当我现在查看我看到的图表时,每次迭代所需的时间急剧下降。
现在我想知道为什么会这样。 我的问题是,我的显卡接管了繁重的工作,但第一个函数迭代 n 次,第二个(蓝色的)没有单次迭代,但“繁重”的计算使用双精度。
如果需要系统详细信息: 操作系统:Mac OS X 10.10.4 核心:2.8 GHz Intel Core i7 (4x) 显卡:AMD Radeon R9 M370X 2048 MB
如果你需要这两个功能:
新的:
private static int sumOfI(int i) {
int factor;
float factor_ = (i + 1) / 2;
factor = (int) factor_;
return (i % 2 == 0) ? i * factor + i / 2 : i * factor;
}
老一:
private static int sumOfIOrdinary(int j) {
int result = 0;
for (int i = 1; i <= j; i++) {
result += i;
}
return result;
}
为了澄清我的问题: 为什么处理时间会大幅下降?
编辑: 我至少对成本等有一点了解。我可能没有很好地解释我的测试方法。我有一个简单的 for 循环,在这个测试中从 0 计数到 1000,我将每个值提供给 1 个方法并记录它所花费的时间(整个循环执行),然后我对另一种方法做了同样的事情。
所以在循环达到大约 500 次后,相同方法的执行时间明显减少。
【问题讨论】:
-
澄清一下,迭代是每个函数被调用多少次还是输入到函数中的次数?