intel编译器试用
尽管intel中国有压榨软件学院实习生的恶迹,但抛开这些不说,intel的编译器和性能分析工具还是相当不赖。以前就在《程序员》杂志上看到
说intel编译器不仅优化代码的能力出众,而且对于代码中可以化为并行的部分会自动帮你编译为可并行执行的指令....简直是出神入化。
前一阵下载了intel编译器的evaluation版试了试,性能的确能提高30-10%左右。
最大的发现是intel编译器附带自己的c语言库,比如对于内存操作类的函数叫_intel_fast_memcpy, _intel_fast_memset, _intel_fast_memcmp等,由编译器加进object文件里。gcc的memcpy是一个byte一个byte的拷贝,而intel的_intel_fast_memcpy我估计是像linux内核的 __memcpy一样,先一个int(4个字节)一个int的拷,不够4个字节了,再一个short(2个字节)一个short的拷,最后如果剩一个字 节,单独拷它。因为movw花的时间肯定不到movb的四倍,所以这种分粒度的拷贝肯定更高效。当然,也不排除intel编译器另外用了什么高级指令,让 内存拷贝更快——类似MMX里面的矩阵乘法。
前一阵下载了intel编译器的evaluation版试了试,性能的确能提高30-10%左右。
最大的发现是intel编译器附带自己的c语言库,比如对于内存操作类的函数叫_intel_fast_memcpy, _intel_fast_memset, _intel_fast_memcmp等,由编译器加进object文件里。gcc的memcpy是一个byte一个byte的拷贝,而intel的_intel_fast_memcpy我估计是像linux内核的 __memcpy一样,先一个int(4个字节)一个int的拷,不够4个字节了,再一个short(2个字节)一个short的拷,最后如果剩一个字 节,单独拷它。因为movw花的时间肯定不到movb的四倍,所以这种分粒度的拷贝肯定更高效。当然,也不排除intel编译器另外用了什么高级指令,让 内存拷贝更快——类似MMX里面的矩阵乘法。
相关文章
- Intel软件大会(2011)归来 - 03 28, 2011
- Intel软件技术大会(2010)归来 - 04 02, 2010
- [compiler] gcc下的errno冲突 - 01 21, 2010
留言: