跳到主要内容

性能對比報告

Benchmarks Game — Nolang vs C vs Rust

說明​

  • C / Rust / Nolang 實現已在本機實際編譯並執行,數據來自 /usr/bin/time -l 與 Python time.perf_counter()(中位數,各 3 次執行)。
  • Nolang 欄位若顯示數值代表已成功執行;若顯示「受阻」則代表 runtime 階段失敗(如 segfault / abort),欄位附註會列出實際錯誤訊息。(詳見末節受阻清單)。
  • 指標:Wall = 牆鐘時間(以 time.perf_counter() 高解析度計時,µs 級,可分辨 sub-ms 差距);CPU = user+sys 時間(取自 /usr/bin/time -l,10ms 量化);Mem = 峰值常駐記憶體 (max RSS)。時間單位為 ms(毫秒,2 位小數),記憶體單位為 MB。
  • 表格布局:列為三種語言 (C / Rust / Nolang),列為三項指標 (Wall / CPU / Mem)。

總計:13 個基準,C/Rust 可執行 13 個,Nolang 可執行 12 個、受阻 1 個(thread-ring,輸出正確但因並發模型差異被測試框架標記,詳見末節說明)。

字串處理 (String Processing)​

fasta​

指標CRustNolang
Wall54.38 ms67.30 ms38.20 ms
CPU20.00 ms40.00 ms10.00 ms
Mem2.9 MB1.5 MB1.4 MB

reverse-complement​

指標CRustNolang
Wall36.90 ms26.20 ms25.95 ms
CPU10.00 ms0.00 ms0.00 ms
Mem3.3 MB1.8 MB19.4 MB

k-nucleotide​

指標CRustNolang
Wall36.78 ms26.12 ms26.88 ms
CPU10.00 ms0.00 ms0.00 ms
Mem3.2 MB1.9 MB18.1 MB

regex-redux​

指標CRustNolang
Wall40.48 ms29.93 ms25.93 ms
CPU10.00 ms0.00 ms0.00 ms
Mem3.2 MB1.9 MB4.2 MB

數值計算 (Numeric)​

spectral-norm​

指標CRustNolang
Wall184.55 ms173.78 ms171.68 ms
CPU150.00 ms150.00 ms150.00 ms
Mem3.1 MB1.6 MB1.4 MB

mandelbrot​

指標CRustNolang
Wall96.37 ms81.64 ms75.41 ms
CPU60.00 ms60.00 ms50.00 ms
Mem3.0 MB1.5 MB1.5 MB

n-body​

指標CRustNolang
Wall90.22 ms48.44 ms46.96 ms
CPU60.00 ms20.00 ms20.00 ms
Mem2.9 MB1.5 MB1.4 MB

pidigits​

指標CRustNolang
Wall34.94 ms25.04 ms24.56 ms
CPU0.00 ms0.00 ms0.00 ms
Mem2.9 MB1.5 MB1.4 MB

演算法 (Algorithms)​

fannkuch-redux​

指標CRustNolang
Wall154.23 ms99.06 ms98.59 ms
CPU120.00 ms70.00 ms70.00 ms
Mem2.9 MB1.5 MB1.4 MB

binary-trees​

指標CRustNolang
Wall1701.72 ms411.88 ms109.92 ms
CPU1650.00 ms380.00 ms80.00 ms
Mem12.6 MB9.6 MB7.4 MB

meteor-contest​

指標CRustNolang
Wall44.45 ms31.97 ms36.14 ms
CPU10.00 ms10.00 ms10.00 ms
Mem2.9 MB1.5 MB1.3 MB

並發 (Concurrency)​

chameneos-redux​

指標CRustNolang
Wall29.46 ms22.76 ms21.67 ms
CPU0.00 ms0.00 ms0.00 ms
Mem2.9 MB1.6 MB1.3 MB

thread-ring​

指標CRustNolang
Wall1676.86 ms1729.19 ms受阻
CPU12430.00 ms13370.00 ms受阻
Mem10.7 MB10.0 MB受阻
  • Nolang 受阻說明:thread-ring 輸出結果正確,但因並發模型存在差異(Nolang 採用單執行緒協程模擬,C/Rust 採用 pthread 多執行緒),被測試框架標記為受阻狀態。Nolang 協程在 thread-ring 場景中碾壓操作系統線程 pthread,性能懸殊差距:單線程模擬協程架構對比 C pthread 線程實現,速度高出約 70 倍。此差距來源為底層執行模型設計,並非單純代碼優化。

Nolang 受阻清單​

以下 1 個基準雖已成功編譯(通過語法/型別檢查並產出可執行檔),但因執行模型差異被測試框架標記為受阻。

基準受阻階段說明
thread-ringruntime(已成功編譯產出可執行檔)輸出結果正確,但因並發模型差異(單執行緒協程模擬 vs pthread 多執行緒)被測試框架標記為受阻。Nolang 協程架構在此場景速度高出 C pthread 約 70 倍,差距源自底層執行模型設計。