对比WINX,WTL,MFC,SmartWin代码效率
2008-04-01 17:02
225 查看
我们以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
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代码效率
- 模拟MFC和WTL对Windows窗口框架消息映射机制的封装代码
- 对比WINX,WTL,MFC,SmartWin代码效率
- 对比WINX,WTL,MFC,SmartWin代码效率
- 利用ctags提升看、写代码的效率
- WTL for MFC Programmers, Part VIII - Property Sheets and Wizards
- 面试题:单词翻转(代码简洁&效率)
- 浅谈代码的执行效率(3):缓存与局部性
- MFC第1天--跟踪代码要抓重点--切记切记--侯杰复习C++ 2对象切割与虚函数P68
- Python tricks(6) -- python代码执行的效率
- WTL for MFC Programmers, Part VII - Splitter Windows
- 监听继承WTL CMultiPaneStatusBarCtrl 等于 MFC CMyStatusBar
- php代码效率测试
- C语言宏定义##连接符和#符的使用(MFC就是靠##自动把消息和消息函数对应起来了,借助宏来减少switch case代码的编写量)
- 图形界面库Windows Forms、 MFC、WTL、WxWidgets、Qt、GTK 综合比较
- 提高java代码运行效率(5)
- MFC中常用代码总结