让人爱恨交加的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,体积加倍效率不增……
...全文
701 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
学习学习。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧