【发布时间】:2014-09-22 23:27:09
【问题描述】:
我希望改进这段代码:
for (int i = 0; i < a.length(); i++) {
for (int j = 0; j < b.length(); j++) {
if (arrayA[i] == arrayB[j]) {
arrayA[i] = ' ';
arrayB[j] = ' ';
}
}
}
昂贵的操作是
arrayA[i] = ' ';
arrayB[j] = ' ';
如果我注释掉代码从 180 毫秒到 12 毫秒...
需要类似的东西,以便我可以计算空数组。
【问题讨论】:
-
如果你注释掉这两行,编译器可能会注意到你的循环没有做任何事情并且正在完全优化它们。我怀疑时间结果是否反映了这两条线路的成本。
arrayA和arrayB最初包含什么? -
注释掉一行,它的表现如何?这将允许您从理论上确定仅一组操作的成本。两个集合操作将是差乘以 2。
-
@Compass - 除非注释掉一行会影响
if语句正文的输入频率。 -
@TedHopp 啊,你把我带到了那里。虽然在我的脑海中运行它,但它似乎并没有这样做。在找到 A[i] 之前它似乎是单遍的,然后就不需要再找到了。
-
这段代码的目的是什么?你用它得到正确的结果吗?
标签: java arrays string performance char