首页 > 学海无涯, 漫谈 > Windows 下C++ 学习平台的选择

Windows 下C++ 学习平台的选择

  对于大多数人来说,计算机只是一个工具,作为一个工科大学生,我不是程序员,但也有很多用得着程序的地方,一个良好的平台,对学习无疑能起到极大的促进作用。

一、为什么选择C++

  之所以选择C++,是因为在科研方面,C++有许多已经很成熟的库,也有许多前人的工作可以借鉴,尽管其本身的学习要难些,但资料很多,遇到问题也不难在google上得到答案,而且C++程序的效率比较高。写程序的效率方面,不拘泥于C风格,适应起STL风格的编程,也还是比较高的。

二、IDE

  选定了语言,就要选具体的开发平台了,不像国外,国内还是windows当道,机子配置低的可以选择eclipse,还可以的可以选择vs2008(普通双核就很ok了,没有传说中的那么夸张),但是msvc编译器这玩意还是有很大的优化余地的,在这里选择了用SGI STL库取代其自带的库,同时试用了Intel C++编译器11.1版本。原因很简单,SGI STL的效率比自带库高得多了,Intel编译器才颇有独到之处,请看下文。

三、STL库的选择

  我借用 C++ Primer测试string和C风格字符串的一段程序作了测试,源代码如下:

#include <ctime>

#include <string>

#include <iostream>

#include <cmath>

using namespace std;

int main(int argc,char *argv[])

{

clock_t StartClock,EndClock;

const int LoopTimes=5000000;

for (int i=0;i<1000;i++)

{

    sin(5.0);

}

StartClock=clock();

//C-style code

const char *pc=”a very long literal string”;

const size_t len=strlen(pc);

for (size_t ix=0;ix!=LoopTimes;ix++)

{

    char *pc2=new char[len+1];

    strcpy(pc2,pc);

    if (strcmp(pc2,pc))

    {

        cout<<”error”<<endl;

    }

    delete [] pc2;

}

EndClock=clock();

double DurationTime1=static_cast<double>(EndClock-StartClock)/CLOCKS_PER_SEC;

StartClock=clock();

//string-style code

string str(“a very long literal string”);

for (string::size_type ix=0;ix!=LoopTimes;++ix)

{

    string str2=str;

    if (str2!=str)

    {

        cout<<”error”<<endl;

    }

}

EndClock=clock();

double DurationTime2=static_cast<double>(EndClock-StartClock)/CLOCKS_PER_SEC;

cout<<”C-style: “<<DurationTime1<<” s.”<<endl;

cout<<”String-style: “<<DurationTime2<<” s.”<<endl;

return 0;

}

测试平台:

CPU:Intel Q9550

内存:4G

系统:Windows 7 ultimate x64

测试的结果如下:

编译平台

C风格

string

Intel 11.1 x86(VS STL)

0.579

0.888

Intel 11.1 x86(SGI STL)

0.579

0.340

Intel 11.1 x64(VS STL)

0.399

0.530

Intel 11.1 x64(SGI STL)

0.422

0.073

MSVC9 x86(VS STL)

0.578

0.967

MSVC9 x86(SGI STL)

0.585

0.345

MSVC9 x64(VS STL)

0.559

0.559

MSVC9 x64(SGI STL)

0.567

0.102

MinGW with GCC4.4 x86

1.573

0.208

MSVC10 x86(VS STL)

0.521

0.554

MSVC10 x64(VS STL)

0.550

0.430

  很明显,VS STL没有达到Lipman描述的超过C风格的效率,而SGI STL则可以,测试中32位平台效率最高的是GCC4.4,这也是一个优秀的编译器,不过还是在Linux下用起来比较顺当。另外64位平台明显比32位快,对速度比较敏感的项目可以考虑迁移平台了。

四、boost库

  boost库又被称为未来的标准库,其中包括已经纳入tr1甚至即将发布的c++ 0x标准中的库,lambda表达式等新鲜东西不光适合尝鲜,也很有益于开发效率,也是我下一步将要学习的大头之一。

五、Qt

  选择它的原因很简单,相比较于MFC,它实在是好学得多了,我不是程序员,我只是想要用一个简单的界面表达我想要达到的功能,也许C#+Windows Form会更简单,但是我真的懒得再多学一门语言,也不擅长混合编程。

六、后记

  补遗一下,Visual Studio 2008下有个很好用的工具,就是大名鼎鼎的Visual Assist了,番茄很好吃,也是我偏爱这个IDE的很大原因之一,对我来说,傻瓜又好用才是王道。

  下一次该要记录的,就是这个平台的搭建了。

分类: 学海无涯, 漫谈 标签: , , 331 views
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用新浪微博登陆