测试目标,绘制动画的速度,性能,资源耗用
各种测试程序可以从下面下载
http://download.youkuaiyun.com/source/2089751 Qt4.6(无runtime)
http://download.youkuaiyun.com/source/2089762 MFC(无runtime) VS2008
http://download.youkuaiyun.com/source/2089758 C#(无runtime) 注意:C#的优化方法有点多,使用GDI,使用unsafe,都可以.unsafe的方法研究中...期望能向
MFC靠拢.
http://download.youkuaiyun.com/source/2621911 DELPHI 使用DDB
http://download.youkuaiyun.com/source/2621907 DELPHI 未使用DDB
SDK
C# API
其他源码随后附上
测试内存位图大小都是 1280*768 像素的矩阵面积
Name | Qt | C# | MFC | DELPHI | VB5 | C#(API) | win32 SDK | BorlandC++ |
---|---|---|---|---|---|---|---|---|
CPU | 50% | 50% | 24% | 50% | 30-40% | 25% | 28% | 28% |
内存 | 12MB | 25MB | 6MB | 6MB | 12MB | 12MB | 7MB | 5MB |
帧数fps | 92 | 20 | 58-62 | 40 | 40 | 62 | 58-62 | 64 |
备注 | 相当恐怖的帧数,只能说图形函数缓冲算法优化的好,相当赞 | 使用GDI+ 托管环境 | 使用BitBlt+GetClientRect做DBB | 使用Canvas 未测试WINAPI方式 | ■picturebox方式帧数只有10(未使用DBB) ■WINAPI直接画20帧左右(未使用DBB) ■使用DBB可以实现最高性能.帧数40 | 使用WINAPI之后速度猛增,超过VB(API)方式.和MFC/SDK方式持平 | 和MFC差不多,但是略微还慢那么一点点 | 和win32SDK相同.但是文件大小很大400K+ |
打包的EXE程序提供下载,自己行在自己电脑上对比速度 http://download.youkuaiyun.com/source/2630603
以上代码都是采用DBB双缓冲方式测试.都在win32平台运行,其中基于qt开发的程序尚未在linux上编译测试.
qt 优势,跨平台,性能难度平衡的不错;缺点:运行速度需要提升.
C# 优势,开发速度快;缺点:慢,庞大,臃肿.
MFC,优势,运行速度一流,内存占用小.缺点,开发较复杂
DELPHI给我的感觉是速度仅次于MFC和QT
VB在调用API之后速度猛升,仅次于DELPHI
SDK的不作讨论,MFC接近之.
综上调用API之后都差不多的速度....但是CPU占用是不同的.以此可以看出"胶合层"的厚度.
最后排名
sdk(理论上,呵呵无敌的)
qt(这家伙底层貌似用了多核技术,帧数最高)
mfc(多核支持啊...多核支持...)
delphi
vb
C#
帧数计算采用单独的timer,因此不影响fps.
由此可以看出3个知识点:
1,C#,美式风格,忽悠民众,优势不在于开发超stable型的应用程序,只能说强化了GC类产品的概念,个人觉得很不错,上升空间明显.
C,依然是龙头老大,中国院校很重视C,基础教育,很好,请坚持.
qt,欧式开发典范,非常个性,眼光独到.希望引擎方面再做优化,毕竟对于一款跨平台产品,相比是最好的了.
delphi和vb没研究过历史
2,芬兰,欧洲风格,包括欧盟和前苏联范畴,喜欢创新,不喜欢垄断,眼光独特,重视理论研究.但是"人性化"方面是其弱点,商业性方面也是其弱点;相反,美帝国主义就商业运作(怎么样卖钱,性能其次次..),拉拢万千少女程序员(界面华丽,上手容易,简单)很在行,但是运行速度太慢;
3,C是China的第一个字母,所以,没话说!;J是Japan的第一个字母,日本用Java的多啊,这里说说日本,日本开发界的风格是和以上的都不同,"研发"很少,"拿来"很成气候,关键是会挑,所开发产品具有很强的针对性,或者说具有"夺标性"的软件很多,平台不限,所有的开发,都是基于需求,严格按照需求执行开发语言的选择...回朔到二战时期,"零式战斗机","Ki-84"这些,都是基于某方面的变态追求而问世,比如"零战",水平盘旋很厉害,KI84的火力非常的猛,但是顾头就顾不到尾,这些名机,都是纸飞机,中弹必解体.其实日本人很多领域都是这样的行事态度,因此对付的办法就是抓住他们的弱点,打之,必胜!...唉.扯远了.