您的位置:学习中国 推荐教程 C++C语言 正文
原作者:kuku 添加时间:2007-06-02 原文发表:2007-06-02 人气:50 来源:互联网

本文章共2609字,分2页,当前第2页,快速翻页:
 
-----------------------------------------------------------------------------------------------------------------------------------------------

本文提示:《创建可移植的64位应用程序代码(2)》是本站编辑们为广大网友精选的实用文章,本文阐述了关于文章的相关理论,相对来说专业性强,但是本文只是针对于某个问题提出的见解与论述,未必能辐射到相关问题的方方面面,所以本文处理问题的方法仅仅为您提供一些参考。更多问题请查阅学习中国网其他栏目哦.

-----------------------------------------------------------------------------------------------------------------------------------------------

如果程序不是面向大众的,可以考虑关闭一个Microsoft缺省打开的安全特性:侦测缓冲溢出(-GS)。如果程序不是多线程的,也可以考虑关闭产生线程安全代码的缺省选项(-D_ST_MODEL)。关闭这两个选项会带来轻微的性能提升,但要确定必须是在没有牺牲安全的情况下换来这点速度提升。拿不准的话,还是让它们缺省打开吧。

利用上述的这些开关控制选项,可得到Microsoft Windows平台上干净、快速、且可具移植性的程序代码,那我们再来看看Linux。

GCC编译器

 

在Linux平台上,GNU gcc C/C++编译器存在着许多种不同的版本。

对于在Linux平台下的AMD64应用程序二进制层面上,ILP是32位、64位和64位。正如前面所说的,在移植代码到新平台之前,要充分考虑这些数据的位宽。AMD推荐以下可以使用AMD64技术的操作系统版本,它们是:

Red Hat Enterprise-gcc-ssa (从3.5开始的一个分枝)-package: gcc-ssa 安装于 /usr/bin

SuSE Linux-gcc 3.3.3 (Hammer版)-package: gcc-33 安装于 /opt/gcc33

以上两个版本的gcc通过使用下述选项,都可以生成更快的代码,这对gcc来说,终归是一场挑战,因为相对于优化,它最初的设计目标是创建可具移植性的代码。

-O3打开几个通用的优化

-ffast打开浮点数学运算的更快方法,与之前提过的Microsoft的选项类似

-funroll-all-loops将把所有的循环解开成代码。这个开关选项使可执行文件的体积变大,但能改善执行效率,然而,测试一下此选项所带来的改变是非常重要的。举例来说,如果因为循环被展开后,不再适合放入缓存,那实际上将降低性能,因此,有些循环最好还是不要管它。多试几次,将会有助于判断此选项带来的价值。

64位GCC编译器同样也提供了配置向导优化(profile-guided optimization PGO)。想了解PGO是如何运作的更多信息,参考前面所提及的Microsoft编译器部分。对以上提及的gcc编译来说,要想使用PGO,第一步是带上-fprofile-arcs选项,接下来在重新编译中打开-fbranch-probabilities选项。

还有一件更重要的事,如果程序中有许多数学运算,就像计算FFT、调用触发器函数,或者解算线性代数,可能此时就要考虑使用AMD核心数学库(ACML),它提供了针对于含有AMD64技术芯片的高度优化的函数。在这些数学函数被经常调用的密集循环中,ACML能带来实质上的性能改变。

总之,明智地使用这些开关选项,你可以在AMD64平台上生成可具移植性,且极有效率的代码。


 
本文章更多内容<<上一页 - 1 - 2
本页地址
收藏到:[收藏夹] [百度搜藏] [新浪ViVi] [POCO网摘] [ 和讯网摘] [好哦网摘] [Google书签]
               
[搜狐网摘] [365Key网摘] [天极网摘] [我摘] [博采网摘] [igooi网摘]
相关文章

设计OutLook风格的工具栏
C++程序员必需的修养
如何编写异常安全的C++代码
在c++程序中重启自己的一种方法
踏入C++中的雷区——C++内存管理详解
C++的救赎 C++开源程序库评话
初学者必备:C++经典入门详细教程
C++对象的拷贝与赋值操作
c语言中的指针专题
C++:最强大的.NET语言之对象构造
C++箴言:为类型信息使用特征类
探索C++的秘密之详解extern C
C++箴言:用成员函数模板接受兼容类型
C++之父Bjarne谈C++中的STL模板
对象布局及多态探索之菱形结构虚继承
如何访问模板化基类中的名字
C++对象布局及多态之虚成员函数调用
理解隐式接口和编译期多态
C++程序中导出Word文档简易方法
C++程序设计从零开始之语句

相关评论


本文章所属分类:首页 推荐教程 C++C语言   C++C语言