我用 C++ 和 Java 编写了一些代码,看看哪个运行得更快。
这段代码所做的只是增加两个变量,然后将它们相乘。正如预期的那样,C++ 比 Java 稍快。
一切都很好,直到我将数据类型从int更改为long(在 C++ 中为 long long)。然后 C++ 花费了大量时间来执行这段代码,而 Java 的执行时间几乎没有增加。
有谁知道为什么 C++与 Java 相比,在long上执行计算需要这么长时间?
C++ 代码 *(~53 秒,与 __int64)* 相同的结果:
long long limit = 2e9;
long long loopLimitI = sqrt(limit);
long long product = 0;
for(long long i = 2; i < loopLimitI; i++){
long long loopLimitJ = limit / i;
for(long long j = 2; j < loopLimitJ; j++){
product = i * j;
}
}
Java 代码(约 11 秒):
long limit = (long) 2e9;
long loopLimitI = (long) Math.sqrt(limit);
long product = 0;
for(long i = 2; i < loopLimitI; i++){
long loopLimitJ = limit / i;
for(long j = 2; j < loopLimitJ; j++){
product = i * j;
}
}
编辑:我的操作系统:Windows 8 (x64)。 优化设置- /O2
两者都在运行代码,最后product的值为 1999923120。对于 C++ 和 Java
好的,我刚刚尝试创建一个数组并保存 i * j 乘法的所有结果(以确保它正在运行)。与 Java 相比,我仍然在 C++ 上花费大量时间。
知道为什么会发生在我身上吗?
解决方案:
MS Visual Studio 中的“平台”自动设置为 x32。您只需将其更改为“x64”。很抱歉提出一个相当令人困惑的问题,我是 VS 和 C++ 的新手。