gpt4 book ai didi

java - 长数据类型计算——为什么Java比C++快很多

转载 作者:行者123 更新时间:2023-11-30 20:07:06 25 4
gpt4 key购买 nike

我用 C++ 和 Java 编写了一些代码,看看哪个运行得更快。

这段代码所做的就是基本上递增两个变量,然后将它们相乘。正如预期的那样,C++ 比 Java 稍快。

一切都很好,直到我将数据类型从 int 更改为 long(C++ 中的 long long)。然后C++花费了大量的时间来执行这段代码,而Java的执行时间几乎没有增加。

有谁知道为什么与 Java 相比,C++ 在 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++ 的新手。

最佳答案

您编译它时没有进行优化。使用正确的设置进行编译,C++ 版本将在 0 秒内运行,因为它什么也不做。

关于java - 长数据类型计算——为什么Java比C++快很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17033362/

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