SPEC 基準(the SPEC benchmarks)
/ SPEC: speck /
如果每家車廠都發明自己私有的測試、宣布自己是贏家,買家就無從比較。所以業界同意採用共享、有裁判的測試。SPEC——標準效能評估公司(Standard Performance Evaluation Corporation)——就是電腦界的那個裁判:一個非營利聯盟,發布由真實程式組成的標準化基準測試組,以及執行與回報的嚴格規則,讓不同廠商的結果能並排對齊比較。
最有名的測試組 SPEC CPU 集結了二十多個真實應用程式,取自編譯器、模擬、壓縮、AI 與科學運算,分成整數(SPECint)和浮點(SPECfp)兩組。每台機器把它們全跑一遍;每個程式的執行時間和一台固定的參考機器比較得出每程式比值,再用幾何平均把這些比值合成一個頭條分數。關鍵是,SPEC 定義了規則:允許哪些編譯器旗標、執行必須可重現、結果必須完整揭露以便稽核。還有其他 SPEC 測試組——針對功耗效率、網頁伺服器、虛擬化等等。
SPEC 是最受敬重的通用基準測試,但它不是定論,假裝它是定論就是錯誤。廠商仍會專門針對 SPEC 程式最佳化編譯器,所以 SPEC 分數可能高估日常效能;SPEC CPU 操練處理器與記憶體,卻幾乎不碰磁碟、網路或互動性;而你那個特定的應用程式,可能和 SPEC 的組合一點都不像。把 SPEC 當作可信、可比較的起點——正因為它的規則能抵抗最糟糕的操弄——但最後一定要量測你真正在意的那個工作負載。
SPEC CPU 報出每個程式相對於參考機器的比值:若程式 X 在參考機器上要 100 秒、在你的機器上要 25 秒,它的比值就是 4。測試組的頭條分數是所有這類比值的幾何平均——所以任何單一程式都無法靠它數字本身的大小主宰結果。
SPEC 在受稽核的規則下,用幾何平均把每個程式的比值合起來——可信,但仍是為它而調,且不等於你自己的工作負載。
高 SPEC 分數是個可信的訊號,不是對你應用程式的保證。編譯器是專門針對 SPEC 程式調過的,而 SPEC CPU 大致忽略輸入輸出與互動性,所以它可能和你實際的體驗有出入。