计算10000以内素数个数,并输出:
#include <iostream>
#include <time.h>
#define PRIME 10000
using namespace std;
int main()
{
int nCount = 0;
clock_t t1, t2;
t1 = clock();
for (int i = 1; i<PRIME; ++i)
{
bool bYes = true;
for (int j = 2; j<i; j++)
{
if (i%j == 0)
{
bYes = false;
break;
}
else
{
bYes = true;
continue;
}
}
if (bYes)
{
++nCount;
cout << i << endl;
}
}
t2 = clock();
cout << "Totle:" << nCount << "\t" << "Escaps:" << t2 - t1 << endl;
return 0;
}
分别用VS2013 编译,/O2选项.,GCC环境为 Mingw32 G++ 4.9.2 优化选项 -O2
G++版 :
165至172毫秒之间
VC2013就有点寒碜了....基本在265至270之间;
虽然只是数值运算,但也说明GCC性能果然强劲.如果不考虑IO输出.GCC在20至27毫秒之间,而VS也只在20至25毫秒之间,可能数值太少.
把数量调整为计算10万以内的质数,且不进行IO输出,分别测5次:
GCC:1639,1631,1628,1633,1630 ;
VS2013:1620,1644,1619,1623,1628;
VS2013相比之下还稍微快一点,虽然快得不明显.
GCC使用的STL是应该是SGI STL.
而VC一般都是默认的P.J. Plauger STL.
看来不同的STL版本性能差异还是比较大的.其实如果不考虑夸平台移植,用微软的VC++也是个不错的选择.