对比WINX,WTL,MFC,SmartWin代码效率
2008-04-09 00:38
387 查看
我们以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 透明窗口两种代码对比
- “带锁的门”问题,并有c语言和python代码运行效率对比
- 模拟MFC和WTL对Windows窗口框架消息映射机制的封装代码
- 对比使用C# unsafe代码和OpenCV进行图像处理的效率(上)
- php 实现繁体转简体代码效率对比
- 托管代码和非托管代码效率的对比。
- MFC、WTL、WPF、wxWidgets、Qt、GTK的对比
- 托管代码和非托管代码效率的对比(转)
- ThinkPHP5和无框架代码在高并发下的效率对比
- 【效率优化】armabi与armabi-v7编译代码效率对比
- lua:部分常用操作的效率对比及代码优化建议(附测试代码)
- 托管代码和非托管代码效率的对比。
- 托管代码和非托管代码效率的对比问题
- .NET 中对 PHP、Binary、SOAP、XML、JSON、Hessian 等序列化的效率对比
- 用VS调试嵌入在MFC程序里的WPF View代码