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的时间有关系.
这种需求下,其实原则就是程式能尽量简单就简单些,看起来酷酷很先进的写法,
能不用就不要去用,不过这种求精简破坏物件化结构和维护方便性的做法,
除非特殊原因,不然也不建议.