【发布时间】:2011-07-08 00:44:10
【问题描述】:
我想知道为什么会一直发生这种情况...!! 我编写了两个程序,一个用 c 编写,另一个用 c++ 编写。两者执行相同的操作。即打印从 1 到 2000000 的数字。另外,我在执行开始时设置计时器.. 打印完所有数字后,还打印了经过的时间.. c++ 程序所用的时间总是比 c 程序长。 我觉得时间差异很大。我很想知道这是什么原因..????..
这是两个程序
//iotest.c
#include<stdio.h>
#include<time.h>
clock_t start=clock();
int main()
{
for(int i=0;i<2000000;i++)
printf("%d\n",i);
printf("Time Elapsed: %f\n",((double)clock()-start)/CLOCKS_PER_SEC);
return 0;
}
//iotest.cpp
#include<iostream>
#include<time.h>
using namespace std;
clock_t start=clock();
int main()
{
for(int i=0;i<2000000;i++)
cout<<i<<endl;
cout<<"Time elapsed "<<((double)clock()-start)/CLOCKS_PER_SEC<<endl;
return 0;
}
// 版本 C++ 4.3.2 通过发出命令编译c程序
g++ iotest.c
执行给予
1
.
.
2000000
经过的时间:5.410000(并不总是相同..)
执行第二个程序
1
.
.
2000000
经过的时间:5.81(并不总是相同..)
【问题讨论】:
-
你的编译命令是什么,实际运行时间是多少?
-
每个用了多少时间?您使用的是哪个 C 编译器?您使用的是哪个 C++ 编译器?您在哪个操作系统中执行这些操作?
-
尝试将
<< endl替换为<< '\n'。endl也会刷新流。别忘了告诉我们结果:) -
这些都是 C++ 程序。您在比较 stdio 和 iostream,而不是 C 和 C++。
-
你真的可以在 C 中的函数之外
clock_t start=clock();吗?这是 C1x 中的新事物之一,还是 gcc 扩展?