https://github.com/erspicu/filter_test
通常要求即時性的vidoe filter應該少會用全C#去實作,
不過一方面是為了好奇.一方面是挑戰C#效能極限.一方面是相容考量,
所以還是嘗試用純C#來擔任模擬器電玩常見的ScaleX HQX XBRz filter處理任務....
不過除了 ScaleX 外 , HQX跟XBRz 都是移植人家已經寫好的C#改寫方案,
再加上修改減化.重構.效能校調來的....
很刺激...你會發現改了啥地方,突然FPS竄升起來,或是幾個零零星星的小地方改一改,
效能累積起來就提升不少,目前除了HQ6X (HQ3*HQ2)效能我覺得不太及格外,
其他擔任一般古早機的scaler,以現在普遍的電腦效能來處理大概都算.
目前這幾個filter,xbrz跟hqx都還有不少校能改善空間,對這種議題有興趣的,
可能嘗試修改看看.
大概的心得是,其實cost最高的是任何跟array數據存取的部分,
也就是說效能瓶頸主要是array記憶體這塊,也難怪記憶體硬體還一直在進化中….
其他什麼 加減乘除 邏輯判斷等等的cost反來相當低…
但若真的太多累贅的code,同樣會拖慢….
另外method展開,照理說少了stack push pop返回等動作效能會提升,
但若是展開的code太長太多塞起來,效能反來會大下降,
可能跟code 本身 loading的時間有關係.
這種需求下,其實原則就是程式能盡量簡單就簡單些,看起來酷酷很先進的寫法,
能不用就不要去用,不過這種求精簡破壞物件化結構和維護方便性的做法,
除非特殊原因,不然也不建議.