让人爱恨交加的Intel C++ Compiler

jackyjkchen 2009-09-03 01:58:47
感谢CSDN网友提供的Intel C++ 11.0的license文件,呵呵,现在即便使用ICC的大多也在用9.0或10.0呢。

我的专业是信息安全,经常需要高效率的调用密码学库,这次的项目对效率要求极高,虽然我用VC编译的TomCrypt动态库效率已经达到要求了,T7300 CPU下AES加密速度已达到102MB/S,RSA1024密钥生成速度0.1s级,要知道我之前下载的许多算法RSA1024的密钥生成至少得0.5s。不过我还是想精益求精,改用ICC编译TomCrypt,VC2008编译界面程序。打开T7300可以使用的SSSE3优化,果然速度提高了5%,达到了109MB/S,要知道近10年来编译器效率提升至多也不过这个数。

虽然效果很明显,但是代价也大,首先就是体积,大了差不多60%(MFC界面程序如果用ICC编译就直接加倍了,介于此,再加上ICC对界面程序优化不大,我就没用ICC编译界面),而且编译链接时间多了几倍,内存占用超过500M……为了5%,忍了……

ICC最大的好处其实是对VC的几乎100%的兼容,VC代码用ICC编译不用做任何改动,本来么微软和Intel就是盟友,不构成竞争,ICC只能用VS做IDE就是明证(CodeBlocks也有ICC这一项,但是竟然无法像对VC和GCC那样自动识别,可见兼容性……),如果跑算法,CPU又是支持SSE3以上指令集的,ICC确实不错,不过也仅限于单独编译算法模块,界面等千万别用ICC,体积加倍效率不增……
...全文
406 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
nineforever 2009-09-04
通常对代码本身进行性能调优的效果要比仅仅依赖编译器使用更新的指令集好,因为你比编译器知道更多的假定
回复
spirit_sheng 2009-09-04
考虑如果需要支持多种CPU,则算法部分封装成dll最好
只需要更改编译选项,就可以支持使用SSE3,MMX等(因为老的CPU不见得能够支持SSE3,但可能有MMX)



回复
spirit_sheng 2009-09-04
算法部分封装成dll,使用ICC编译,其他部分使用VC编译即可
回复
jackyjkchen 2009-09-03
[Quote=引用 5 楼 fallening 的回复:]
link的时候肯定问题多多
[/Quote]

没有任何问题
回复
fallening 2009-09-03
link的时候肯定问题多多
回复
bruceteen 2009-09-03
那你可以分别编译嘛,用ICC编译你的TomCrypt,用VC编译你的MFC
然后 link
回复
yangyunzhao 2009-09-03
只用vc和gcc
回复
starcat 2009-09-03
Intel编译器对业余爱好者来说只是听说过,没有实际用过

还是VC,BCC,GCC用的多
回复
晨星 2009-09-03
学习学习。
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2009-09-03 01:58
社区公告
暂无公告