【发布时间】:2018-12-01 07:39:09
【问题描述】:
为什么这段代码在 C++ 中需要 3.87 秒?
#include <stdio.h>
#include <time.h>
int main() {
int iterations=999999;
int size=1000;
int i,k;
clock_t tStart = clock();
for (k=0;k<iterations;k++){
for(i=0; i<size; i++){
//ANYTHING (the content is not important)
}
}
printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
return 0;
}
我在 Ubuntu 16 上的 Eclipse 上使用它。 这是 Eclipse 用来编译它的命令:
g++ -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -MMD -MP -MF"src/myexample.d" -MT"src/myexample.o" -o "src/myexample.o" "../src/myexample.cpp"
我在 Java 上尝试了相同的代码,只需要 0.006 秒。
我做错了什么?
谢谢!
编辑
对不起,我不想说 Java 比 C++ 更好。我只是期望在 C++ 中得到更好的结果,我想知道为什么我的性能很差,所以我在 Java 中尝试了相同的代码。
已解决
使用 -O3 我得到毫秒。
再次编辑
是的,我知道这是一个嵌套循环,但不用担心。我知道我在做什么(代码被简化以表达问题,在完整版中要复杂得多)。错误出现在编译器命令中。阅读@chqrlie 答案。
谢谢!
【问题讨论】:
-
在谈到
C++时,为什么要标记java和c?请避免语言垃圾邮件。 -
您为什么要为您的
c++问题标记java和c? -
因为
-O0告诉编译器根本不要优化代码。试试-O2或-O3看看你会得到什么。 -
由于 OP 没有努力正确地提出问题而投反对票。
-
你有 2 个大的嵌套循环。你期待什么?
标签: c++ performance for-loop