C_Sharp 板


LINE

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



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.56.181
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1450326300.A.BC8.html
1F:→ fo40225: 要更快就要用unsafe去存取array与bitmap 12/17 22:46
真的有仔细看内文和稍微看一下专案的内容吗... ※ 编辑: erspicu (61.70.74.143), 12/18/2015 00:18:49
2F:→ fo40225: 我看了啊 看到都是用SetPixel 这就慢啊 12/18 12:55
HQX SCALE XBRZ这三个filter全都是用array在计算 你看到的GetPixel SetPixel 只是从bmp取出运算范例array 跟把计算好的结果写入到bmp中 这两部分完全不在效能评估的时间内 Stopwatch st = new Stopwatch(); st.Restart(); for (int i = 0; i < 2000; i++) { HS_XBRz.ScaleImage3X(array_org, array_3X, org_width, org_height); } st.Stop(); Console.WriteLine("all time : " + st.ElapsedMilliseconds); int fps = (int)((double)2000 / ((double)st.ElapsedMilliseconds / (double)1000)); Console.WriteLine("fps : " + fps + "\r\n"); Bitmap bmp3x = new System.Drawing.Bitmap(org_width * 3, org_height * 3); for (int i = 0; i < org_width * 3; i++) for (int j = 0; j < org_height * 3; j++) bmp3x.SetPixel(i, j, Color.FromArgb((int)(0xff000000 | array_3X[i + j * org_width * 3]))); pictureBox3.Image = bmp3x; 如果你真的对这专案.议题.文章没兴趣,东西真的可以不需要看一半.
3F:→ fo40225: .net4.6 x64可以用CPU SIMD加速 那些矩阵处理也可以更快 12/18 12:56
4F:→ fo40225: 如果计算量够大 用C++AMP写逻辑给C#用可以比pfor快 12/18 12:59
文章开头就写到 "通常要求即时性的vidoe filter应该少会用全C#去实作, 不过一方面是为了好奇.一方面是挑战C#效能极限.一方面是相容考量," 然後下面推文写说可以插C++进去....... ※ 编辑: erspicu (118.171.212.174), 12/18/2015 13:52:59
5F:→ Litfal: 如果是相容考量,C++应该更好一些,不过得看你相容什麽XD 12/18 16:35
恩 相容的定义其实看那种性质的相容
6F:→ Litfal: 然後filter系的优化,可以用动态产生IL的技巧,把一些不必 12/18 16:36
7F:→ Litfal: 要的运算直接去掉,例如x1、x0、x-1这种在filter里面常出 12/18 16:37
8F:→ Litfal: 现的。直接动态产生IL的方式,我比较推荐Expression Tree 12/18 16:39
9F:→ Litfal: 自己写IL code有点辛苦,虽然有时是必要的... 12/18 16:39
IL code不太熟...不过我猜应该跟我之前k java bytecode大同小异 以後再慢慢看看....
10F:→ fo40225: 文章 专案没看懂是我的问题 抱歉 12/18 16:43
11F:→ fo40225: 但我认为在ScaleImage内的操作 展开成那样 12/18 16:45
12F:→ fo40225: JIT的优化都没了 还不如用unsafe + SIMD 可读会回来一些 12/18 16:46
13F:→ fo40225: 这样也还算是在C#内实作吧?毕竟unsafe操作指标也是C#规格 12/18 16:47
14F:→ fo40225: 如果操作array是瓶颈那就用unsafe去改 12/18 16:49
15F:→ fo40225: 都用上pfor平行操作多笔资料了 用上SIMD一次操作更多不是 12/18 16:52
16F:→ fo40225: 用pfor操作还有可能有CPU cache miss问题 12/18 16:57
17F:→ fo40225: 展开减少stack push pop也可以试试MethodImplOptions 12/18 17:04
18F:→ fo40225: MethodImplOptions.AggressiveInlining 12/18 17:04
method展开照理说会减少掉 stack的 cost ,但很奇怪太过量的展开有时候会有反效果.. 原来跟JIT运作有关?? MethodImplOptions.AggressiveInlining 这东西我在改专案时有看到, 但不知道做啥的... 後来就把它自己手动开展了..而且这东西好像.NET 4.0没有 直接指标又会比ARRAY再快些? 我再确认看看...感谢 不过说真的...这种优化处理问题,真的有心,要到达极致,坚持纯C#的话, 真的跟我想的一样,IL跟JIT都要挖下去... 照理说C#还真的比较少做这种事情..像影音编解码.video filter等等, 多数是c/c++天下. 另外像是GPU的搭配,C#也比较少讨论到... 有小玩一下C#+OPENCL做过些测试... (用别人的套件...应该也是用INVOKE Native的方式) 没写好的话,光记忆体copy进入到vram,和vram copy出来到程式, 不然就是差不多时间,不然甚至更慢... opencl 2.0 虚拟共享记忆体目前好像没看到c#套件有支援到... 这些东西似乎又是另一个世界就是... ※ 编辑: erspicu (118.171.212.174), 12/18/2015 17:43:34







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP