教程第一章第一節對 Shell 排序演算法分別用 C 語言與組合語言 (MASM) 實作,並對相同資料集進行效能測試。結果顯示組合語言在大量資料處理上具備壓倒性優勢。
| 測試項目 | C 語言 | 組合語言 |
|---|---|---|
| 原始碼長度 | 1,363 Bytes | 3,581 Bytes |
| 執行檔大小 | 69,345 Bytes | 803 Bytes |
| 編程耗時 | 20 小時 | 80 小時 |
| 8,000 筆資料排序耗時 | 30 秒 | 8 秒 |
| 48,000 筆資料排序耗時 | 640KB 記憶體不足,無法執行 | 70 秒 |
INT 21h),無運行庫負擔。測試環境約為 1990 年代初 (80386/486, DOS 6.x, 4-8MB RAM)。當時 64KB 段限制是硬性瓶頸,組合語言對分段記憶體的精確控制是關鍵優勢。現代 64-bit 作業系統、平坦記憶體模型、優化編譯器 (GCC/LLVM/MSVC -O2/-O3) 大幅縮小差距,但關鍵路徑手工優化 (SIMD, 緩存友好, 無分支) 仍是高效能計算 (HPC, 遊戲引擎, 視訊編解碼) 的核心競爭力。
組合語言在大量資料處理時,應用靈活,而 C 語言因受到空間限制,以目前之系統空間,無法執行。—— 原文結語
這句話在當時是鐵律,今天則演變為:理解底層硬體特性 (快取行、分支預測、SIMD 寬度、記憶體頻寬) 的工程師,無論用何種語言,都能寫出高效能代碼。