您的位置:首页 > 编程语言

对比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短小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: