易截截图软件、单文件、免安装、纯绿色、仅160KB

【C/C++相关知识】ATOM优化之GCC篇

作者: Yanqing Wang (Intel)
在ATOM程序优化利器中,笔者着重讲述了如何使用Intel Compiler对ATOM应用程序的优化,很多网友都比较感兴趣并想知道在GCC编译器下如何优化ATOM。借此,本文将重点于讨论如何使ATOM应用程序在GCC编译器下优化。
细心的网友可能发现GCC4.4.2手册没有讲述如何在ATOM平台优化,所以要通过GCC对ATOM平台优化,一定要从平台的特性出发。为了便于理解,先回顾一下ATOM平台的特点:
1. ATOM平台的指令是顺序执行的。
2. ATOM平台支持超线程技术,也就是我们通常所说的1C:2T。
3. ATOM平台支持SSE3指令集。
如果我们的GCC编译选项能够满足这基本的三大点,那么相应的应用程序性能也将会有很大提升。
讨论1:ATOM应用程序在ATOM计算机上编译。
对于本机编译而言,这种开发环境相对是比较容易优化的。我们只要关心两个基本点:
1. SSE3指令集。
2. 平台环境(32位还是64位?)。
a) 对于32位操作系统,ATOM应用程序的优化设置为:
-mtune=native -m32 -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath=sse -O3
说明:
-mtune 表示CPU类型,因为它是本地编译,所以选择native编译选项。
-m32 表示平台是32位OS。
-mmmx -msse -msse2 -msse3 -mssse3 表示它支持MMX和SSE1~3的全部指令,编译器更加代码情况优化。
-mfpmath=sse 表示使用SSE指令浮点库
-O3 表示是第3级别优化
b) 对于64位操作系统,ATOM应用程序的优化设置为:
-mtune=native -m64 -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath=sse -O3
和32位系统的唯一差别是:使用-m64替代了-m32,这个比较容易理解,不再鳌数了。
讨论2:ATOM应用程序在非ATOM计算机上编译。
相比与讨论1,这里的主要差别是编译的计算器不是ATOM平台,那么默认的本地优化必须手工设置。按照32位和64位的区别,下文还是分别展开。
a) 对于32位操作系统,ATOM应用程序的优化设置为:
-mtune=pentium -m32 -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath=sse -O3
说明
-mtune设置为pentium处理器,主要考虑它的指令是顺序执行。这个和ATOM的执行顺序十分吻合,对于程序的效率和节能方面将有很大帮助。
-m32 表示平台是32位OS。
-mmmx -msse -msse2 -msse3 -mssse3 表示它支持MMX和SSE1~3的全部指令,编译器更加代码情况优化。
-mfpmath=sse 表示使用SSE指令浮点库
-O3 表示是第3级别优化
b) 对于64位操作系统,ATOM应用程序的优化设置为:
-mtune=pentium -m64 -mmmx -msse -


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

在c中处理utf 8




UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是 ......

ANSI C读书笔记系列之字符集篇 第四章 字节序

"endian"这个词出自<<格列佛游记>>,小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开.我们一般将endian翻译成"字节序",将big endian和little endian称作"大端"和"小端".
在计算机科学领域中,字节序是指存放多字节数据的字节的顺序,典型的情况是整数在内存中的存放方式和 ......

c函数: strtok 和 strtok_r

函数名:   strtok    
  功     能:   查找由在第二个串中指定的分界符分隔开的单词    
  用     法:   char   *strtok(char   *str1,   char   *str2);    
  程序例:    
   
&nbs ......

C/C++中函数指针的含义

函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢?
  如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。
  定义一个指向函数的指针用如下的形式,以上面的test()为例:
  int (*fp)(int a);//这里就定义了一个指 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号