這種就是很經典的程式設計師月經問題啊
INTEL有什麼理由要保證AMD產品的相容性?
AMD的CPU要怎麼開發,那是他們家的事情
INTEL可以保證那才是真正的有問題
不要告訴我他們都是x86架構
那你就去用gcc就好了
為什麼要用ICC?
因為gcc相比VC跟ICC預設的優化最少
但是相容性也最高
事實上gcc在會用的人手上
編譯出來的軟體性能也不會比ICC或VC差
重點是你了解那些優化開關嗎?
這是舊版本gcc手冊,也是我最常用的一版
https://gcc.gnu.org/onlinedocs/gcc-...ptimize-Options
https://gcc.gnu.org/onlinedocs/gcc-..._002d64-Options
很多會寫程式的,其實自己根本不知道程式應該怎麼優化
像現在寫java的,我問他們性能優化問題
他們都說那是jre的事情,其實這說法也沒有問題
但是當我問說要如何轉換到iOS還要確保性能的時候
大家就開始說不出話了
年輕一輩的設計師沒多少真正有幾個可以說出"我懂編譯器"這樣的話
例如我在gcc下編譯LAME做WAV to MP3
有下優化開關的,最多有200%以上的性能差距
如果你完全用x87去跑
性能差距可能還會超過500~1000%
視你下什麼開關而定
但不是人人都知道什麼情況要下什麼參數
MS VC跟ICC就是專門做這些事情
所以什麼都不改的情況下,ICC跟VC性能比gcc高
其實ICC有問題去INTEL Q/A發問
會有專人為你解答
我五六年前就去問過AMD的優化方式
ICC優化用在AMD上不是不行
有一些眉角在,我之前在INTEL Q/A問這個問題
INTEL RD還是很清楚的回答說可以
我告訴他我測試的結果是不行
過了幾天才告訴我說這是一個bug
然後有個暫時的workaround要我先用
回到問題..
一般情況下,如果沒有特別指定優化開關
程式如果檢測到環境條件不滿足
大部分時候是根本無法執行
或使用替代方案,這過程是自動的
替代方案通常性能不會比源方案好
因為替代方案要保證的是軟體在不同cpu架構下的相容性
而不是"性能"
這就是你貼的這幾個連結裡面的問題
但如果你會操作,你其實可以修改替代方案替代目標
這是pcx用ICC編譯的FIREFOX
https://sourceforge.net/projects/pc...st/Firefox/ICC/
可以自動檢測CPU類型,然後應用所能支援的最高優化指令集
其他例如VC的AVX跟AVX2
如果你沒有特別指定的情況
編譯的TARGET設定成AVX2
當在不支援AVX2上機器的時候
通常會有兩個結果
完全不能執行跟只有最慢的x87浮點運算
而大部分你會遇到的都是第一種完全無法執行
但特別指定優化開關,它可以在機器不支援AVX2時自動檢測
如果支援AVX就支援AVX,如果不支援AVX就改成SSE3
這個檢測的過程從不包含檢測到AMD,就把xx跟xxx禁用這種事情