我正在使用用於I-32A體系結構的英特爾C編譯器。 當我編譯我的C程序使用下列選項:PGO比靜態優化要慢(intel編譯器)
icl mytest.c /openmp /QxHost /fp:fast /fast
試運行需要3.3s。現在,我嘗試使用PGO,所以我編譯:
icl mytest.c /openmp /QxHost /fp:fast /fast /Qprof-gen
然後我和我的樣本輸入運行可執行文件的2-3倍,並重新編譯:
icl mytest.c /openmp /QxHost /fp:fast /fast /Qprof-use
希望它能兼顧收集信息。它實際上告訴我它使用.dyn文件,但是結果可執行文件比沒有Qprof使用的文件更慢(3.85s),這與運行的數據完全相同(對於PGO應該是完美的)。 我試着將openmp線程設置爲1,認爲它可能與.dyn輸出混淆,但結果是相同的 - 它比簡單編譯慢。
我的問題是:它甚至在理論上是可能的,或者我用編譯器選項以某種方式搞亂了PGO過程?
'/ Qpprof-use'?第二個p應該在那裏嗎? – CAFxX 2012-07-21 20:30:56
只是一個錯字;打字速度比從控制檯複製粘貼要快:) – 2012-07-21 21:21:34