对比WINX,WTL,MFC,SmartWin代码效率
来源:互联网 发布:婚礼logo设计软件 编辑:程序博客网 时间:2024/05/18 18:00
我们以Hello, World! 程序为例,对比一下各个界面库的代码效率。对于界面程序,个人认为空间效率较之时间效率要占据主导因素,故此这里比较的是空间效率。另外,由于优化的极限是直接用Windows SDK,故此对比亦加入Windows SDK作为参考。参与此次对比的有:
- WINX
- WTL
- MFC
- SmartWin
- Windows SDK
功能:Hello, World!
界面:模态对话框
编译器:Visual C++ 2005
源代码:
- Windows SDK
hello.cpp - WINX
hello.cpp - WTL
hello.cpp - SmartWin
hello.cpp - MFC
HelloMfcDlg.cpp
HelloMfcDlg.h
HelloMfc.cpp
HelloMfc.h
比较结果:
首先,我们对比一下静态链接多线程模式的C库——即MultiThread(MT)时的情形。MFC亦以静态链接方式链接。由于所有的代码均静态链接进去,这种方式无疑是最公平的。对比结果如下:
- Windows SDK:48.0 K Reference:kernel32.dll, user32.dll
- WINX:52.0 K Reference:kernel32.dll, user32.dll
- WTL:76.0 K Reference:kernel32.dll, user32.dll, advapi32.dll, ole32.dll, oleaut32.dll
- SmartWin:132.0 K Reference:kernel32.dll, user32.dll, comctl32.dll
- MFC:184.0 K Reference:kernel32.dll, user32.dll, advapi32.dll, gdi32.dll, oleaut32.dll, shlwapi.dll, winspool.drv
可以看出,WINX产生的代码效率最高,并非常接近Windows SDK,而WTL则次之。SmartWin虽然以模板构建,但是比之MFC并无太大的优势。
我们再来比较一下动态链接多线程模式的C库——即MultiThread DLL(MD)时的情形。MFC采用动态链接方式。这是大型程序典型的链接方式,因此这个比较结果也颇有意义。
- Windows SDK:6.0 K Reference:kernel32.dll, user32.dll, msvc80.dll
- WINX:7.0 K Reference:kernel32.dll, user32.dll, msvc80.dll
- WTL:28.5 K Reference:kernel32.dll, user32.dll, msvc80.dll, advapi32.dll, ole32.dll, oleaut32.dll
- SmartWin:由于SmartWin编译的lib中没有MultiThread DLL(MD)模式,这里未针对其进行比较。
- MFC:10.5 K Reference:kernel32.dll, user32.dll, msvc80.dll, mfc80.dll
尽管MFC采用动态链接mfc80.dll的方式,但是它生成的代码仍然不及WINX短小。
- 对比WINX,WTL,MFC,SmartWin代码效率
- 对比WINX,WTL,MFC,SmartWin代码效率
- 对比WINX,WTL,MFC,SmartWin代码效率
- 对比WINX,WTL,MFC,SmartWin代码效率
- 对比WINX,WTL,MFC,SmartWin代码效率
- 对比WINX,WTL,MFC,SmartWin代码效率
- WINX/ATL/WTL圈子
- SmartWin++
- smartwin++
- MFC、WTL、WPF、wxWidgets、Qt、GTK的对比
- 【效率优化】armabi与armabi-v7编译代码效率对比
- 移植MFC程序到WINX
- 从MFC程序到WINX
- 移植MFC程序到WINX
- 移植MFC程序到WINX
- 移植MFC程序到WINX
- 为基于WTL和WINX的程序提供字体控制
- 托管代码和非托管代码效率的对比问题
- 如何实现Custom Control?如何进行可视化开发?
- The Dearbookian #20030407 书评:C++ Gotchas
- 在有限多的不大于100的正整数中,找出尽量多个相加起来值介于98~102之间的组合
- Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]
- Win32 vs. ATL Windows Programming铪
- 对比WINX,WTL,MFC,SmartWin代码效率
- 软件测试过程的监控方法
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- 十年MFC经历认识的Microsoft技术【原创】
- C++ Gotchas 条款1及条款17
- SELECT 赋值与ORDER BY冲突的问题
- WINX如何做到可视化界面开发
- AOP, Signal/Slot, and Decoupling
- Asp.net 2.0 自定义控件开发[创建自定义HeaderRow的GridView控件][示例代码下载]