※ 引述《richliu.bbs@bbs.poorman.org (新的人生)》之銘言:
: ※ 引述《meltice.bbs@bbs.wretch.cc (三億兩千萬大散戶)》之銘言:
: > 我猜以前寫程式大多時間都花在一個byte一個byte斤斤計較
: > 現在則是東西太多太雜了根本學不完
: 你害我想到小時候是拿 80x86 Instruction Set 寫程式比賽
: 再來算, 誰用的 instruction/clock 少.
: 現在來看這種行為, 實在很豬頭.
: 不僅僅是指令都是 1 clock 結束, 加上 pipeline/prefetch 等功能....
: 不過那個年代也因為如此, 早就知道演算法的重要性, clock 少沒有用
: 演算法正確才是王道.....
assembly 還是有它的妙用, 可以拿來對 critical function 最佳化.
一個 function 被 call 個千萬次的時候, 每一行 code 可以說是寸土寸金.
而且, SIMD 有許多觀念也是從傳統的 assembly 來的.
比如說清空 register 用 xor 而非 mov, 可以減少 memory access.
而演算法還是有其極限, 相同的演算法還是可以有不同的 implement 方式.
同樣是整數乘法跟加法, 在 SIMD 裡用 pmull 或 pmadd 會有些差別.
同樣是浮點轉整數, 是否重設 rounding mode 速度可以差到三倍之多.
優秀的演算法可以讓效能大進, 而優秀的程式技巧可以錦上添花.
演算法廣為人知的時候, 要拼的就是程式技巧了.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.85.8.143