亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

創建可移植的64位應用程序代碼

2019-11-17 05:17:24
字體:
來源:轉載
供稿:網友
靈活地使用編譯器開關選項可生成具移植性且高度優化的代碼,你用了嗎? 充分利用AMD 64位技術需要以下三個條件:必要的AMD64硬件平臺,一個可支持AMD64的操作系統,和一個支持AMD64 的64位編譯器。AMD公司提供了第一個條件,Window和linux提供了第二個條件,而一些開發工具提供了最后一個條件。這篇文章主要著重于闡述怎樣設置Windows(Visual C++ 2005)及Linux(gcc 3.3.3)環境下的C/C++編譯器選項。雖然PathScale和Portland Group公司等幾個開發工具提供商推出了支持AMD64架構的編譯器產品,但對于大多數Windows和Linux下的開發者來說,Microsoft和gcc編譯器仍然是不二的選擇。Microsoft編譯器雖然Microsoft還沒有完全發布針對AMD64的操作系統,但通過它的消費者預覽計劃,已經提供了一個beta版操作系統可供使用,這個叫做Windows xp PRofessional x64的系統已經可以獲取,這個產品的早期版本有不同的名字,所以不要弄混淆了。在這要討論的C/C++編譯器是Microsoft Visual Studio 2005 Beta的其中一個組件,MSDN的訂閱用戶不用任何費用就可以獲得。有關編譯器的信息及開發環境目前都是已知的。在開始設置編譯器選項之前,必須要注重的是,沒有任何選項可以把程序代碼從32位轉換成64位。要移植的代碼必須多留意ILP(整型、長整型和指針),如:一個整型占用幾比特位,長整型、指針呢。這三種類型的數據也許代表了為什么移植的程序會悄無聲息地失敗的一系統問題。在x64的應用程序二進制層面上,ILP分別是32位、32位和64位(注重這與64位Linux上的ILP不同),所以,在移植代碼到新平臺之前,要充分考慮這些數據的位寬。-Wp64 -W3,這一對應用于32位代碼的編譯器選項可以標識出移植到64位平臺的潛在問題。選項Wp64是主要的作用因素,而-W3只是簡單地告訴編譯器要使用三級警告,而三級警告通常是建議性的,比如就像可移植性問題(但較低的警告級別通常會指出更嚴重的問題所在),這些選項將會捕捉到對數據值的無意識截斷。從個人角度來說,不管目標平臺是什么,都要打開這些選項,以保證編寫出的代碼都具有可移植性。假如使用Visual Stuio .NET,通常可以在"工程"->"屬性"對話框中,在GUI模式下打開這些選項,然而,你還是可以從命令行模式使用make [程序名]或批處理文件,來編譯程序,通常是在命令行中鍵入 cl 命令,這個命令將調用C/C++編譯器。命令后面緊接著依次是:開關選項、文件名、鏈接期間選項。一旦你寫好的代碼能正常運行,通過設置以下的優化選項,可在運行平臺上得到更好的執行效率(以下只是針對AMD平臺的建議)。-O2打開幾個標準的優化步驟-Ob2打開內聯函數展開(小函數將在被調用處內聯處理,這比直接調用它們效率更高)-GL打開內部過程優化(只在函數間)-fp:在浮點數學運算中,假如只是導致精度稍微的損失,那么加快運算形式。假如需要極度精確的浮點結果,可能你要避免使用此選項,但假如在數字的最后一些位中,程序可接受取整(四舍五入),使用此選項將會極大地提高浮點執行效率。在本文后面的參考資源中,會有關于此折衷方法的具體解釋,同樣也會解釋通過使用pragma,怎樣在函數調用函數時打開快速浮點功能。 Visual C++ 2005帶來了配置向導優化(profile-guided optimization PGO),這種形式的優化只是由兩個步驟得來的結果。首先,代碼將會通過設備化(-LTCG:PGI)選項來編譯,接下來程序會運行,在運行期間,設備化代碼產生一個可執行的概括文件,這個文件包含了哪些函數被調用,是以什么順序呢等信息。運行過幾次之后,程序將在源代碼級重新編譯,并且使用設備化文件作為輸入。編譯器此時在程序執行模式的基礎之上,再進行一次附加的優化(這次編譯使用-LTCG:PGO選項)。設備化可以告訴編譯器許多重要的信息,例如:假如兩個函數總是一個接另一個地執行,可能的話,就把它們放在同一個內存頁當中。基于AMD芯片的電腦上,Microsoft自己的測試表明(相關詳見資源中有關PGO的文章),在benchmark測試中,配置向導優化將帶來大約10%的性能提升。假如程序不是面向大眾的,可以考慮關閉一個Microsoft缺省打開的安全特性:偵測緩沖溢出(-GS)。假如程序不是多線程的,也可以考慮關閉產生線程安全代碼的缺省選項(-D_ST_MODEL)。關閉這兩個選項會帶來稍微的性能提升,但要確定必須是在沒有犧牲安全的情況下換來這點速度提升。拿不準的話,還是讓它們缺省打開吧。利用上述的這些開關控制選項,可得到Microsoft Windows平臺上干凈、快速、且可具移植性的程序代碼,那我們再來看看Linux。 photoshop教程 數據結構 五筆輸入法專題 QQ病毒專題 共享上網專題 Google工具和服務專題 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/binSuSE 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平臺上生成可具移植性,且極有效率的代碼。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
懂色av影视一区二区三区| 久久久久国产精品www| 国产精品pans私拍| 欧美视频中文字幕在线| 国产精品综合网站| 色老头一区二区三区在线观看| 日韩禁在线播放| 国内精品久久久久影院优| 全色精品综合影院| 秋霞午夜一区二区| 91黑丝在线观看| 57pao成人永久免费视频| 亚洲天堂av在线免费观看| 亚洲最新视频在线| 91精品综合久久久久久五月天| 日本一区二三区好的精华液| 亚洲欧美制服中文字幕| 青草青草久热精品视频在线观看| 日韩成人av一区| 亚州欧美日韩中文视频| 亚洲性夜色噜噜噜7777| 国产精品吊钟奶在线| 日韩在线视频二区| 欧美日韩综合视频网址| 午夜精品在线视频| 日韩视频免费观看| 亚洲韩国欧洲国产日产av| 在线观看视频99| 亚洲久久久久久久久久久| 亚洲第一区第一页| 欧美孕妇孕交黑巨大网站| 日韩在线观看免费网站| 亚洲v日韩v综合v精品v| 成人免费直播live| 久久久国产91| 亚洲缚视频在线观看| 亚洲天堂av网| 亚洲成人黄色在线| 国产精品亚洲美女av网站| 国产91色在线|| 81精品国产乱码久久久久久| 久久久欧美一区二区| 日韩在线视频网站| 欧美日本精品在线| 欧美日韩一区免费| 97高清免费视频| 日韩**中文字幕毛片| 国产aⅴ夜夜欢一区二区三区| 日韩精品欧美国产精品忘忧草| 91精品国产亚洲| 成人在线国产精品| 不卡av日日日| 国产香蕉精品视频一区二区三区| 欧美自拍视频在线观看| 国产精品1区2区在线观看| 51精品国产黑色丝袜高跟鞋| 久久av.com| 久久资源免费视频| 欧美激情视频在线| 亚洲美女性生活视频| x99av成人免费| 97精品视频在线播放| 高跟丝袜一区二区三区| 精品日本高清在线播放| 国产一区二区三区日韩欧美| 国产成人avxxxxx在线看| 亚洲图片制服诱惑| 日韩高清人体午夜| 91在线视频一区| 欧美资源在线观看| 精品国产区一区二区三区在线观看| 国产视频观看一区| 国模精品系列视频| 热门国产精品亚洲第一区在线| 中文字幕日韩视频| 欧美大尺度在线观看| 日韩欧美中文免费| 欧美激情国产日韩精品一区18| 中文字幕日韩在线视频| 国产精品久久久久9999| 亚洲自拍偷拍区| 久久精品免费电影| 国产不卡视频在线| 欧美一区二区视频97| 国产精品久久77777| 国产精品ⅴa在线观看h| 69久久夜色精品国产69乱青草| 亚洲欧美日韩天堂| 国产91九色视频| 久久亚洲精品国产亚洲老地址| 久久视频中文字幕| 日韩在线精品一区| 欧洲s码亚洲m码精品一区| 欧美性猛交xxxx免费看久久久| 一本一本久久a久久精品牛牛影视| 青草成人免费视频| **欧美日韩vr在线| 岛国视频午夜一区免费在线观看| 欧美日韩国产成人高清视频| 久久亚洲国产精品成人av秋霞| 九九热最新视频//这里只有精品| 日韩av一卡二卡| 久久久精品久久久久| 久久亚洲一区二区三区四区五区高| 日韩少妇与小伙激情| 综合国产在线观看| 亚洲高清久久久久久| 亚洲天堂开心观看| 日韩麻豆第一页| 亚洲国产中文字幕久久网| 另类专区欧美制服同性| 国产精品入口日韩视频大尺度| 欧美一区二区三区免费视| 成人激情视频在线播放| 国产欧美久久久久久| 91久久精品美女| 91精品国产99久久久久久| 中文字幕欧美视频在线| 日韩精品高清视频| 国产91色在线|免| 亚洲男人天堂2023| 欧美中文字幕在线播放| 亚洲xxxxx电影| 91欧美日韩一区| 亚洲午夜久久久影院| 性日韩欧美在线视频| 国产极品jizzhd欧美| 精品国内亚洲在观看18黄| 成人免费直播live| 亚洲小视频在线观看| 91av在线网站| 6080yy精品一区二区三区| 久久精品电影一区二区| 亚洲激情视频在线播放| 亚洲高清免费观看高清完整版| 国产一区二区在线免费视频| 日本一区二区在线免费播放| 日韩av最新在线观看| 国产精品老女人视频| 国产伦精品免费视频| 欧美成人在线免费| 国产精品久久久久久久9999| 国产精品久久久久久久久男| 岛国精品视频在线播放| 国产91在线播放精品91| 日本不卡高字幕在线2019| 国产精品久久久久秋霞鲁丝| 精品国模在线视频| 一本色道久久综合亚洲精品小说| 亚洲福利视频久久| 久久综合网hezyo| 成人黄色片在线| 黄色一区二区在线| 国产精品天天狠天天看| 国产精品久久久久久久电影| 一区二区三区动漫| 清纯唯美日韩制服另类| 狠狠色狠狠色综合日日小说| 亚洲精选在线观看| 欧洲成人在线视频| 亚洲free性xxxx护士hd| 久久亚洲国产精品成人av秋霞| 中文字幕亚洲在线| 亚洲视频在线观看网站|