请教开发聊天服务器使用MFC比Win32效率差多少

HappySheepherder 2008-09-22 10:22:57
我一直是使用MFC,现在做服务器要使用win32,感觉很不方便,虽然能使用STL(string, list)之类,但是还是没MFC(CSting、、CArray、界面调试之类)用的方便顺手,当然SOCKE还是要用完成端口,不是用MFC的CSocket,底层的东西不变,只是用MFC比较方便的操作类,所以想请教一下,使用MFC开发服务器到底比win32效率差多少,谢谢了
...全文
338 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
HappySheepherder 2008-10-20
  • 打赏
  • 举报
回复
还是老实用char吧,或者stl的东西做服务器,MFC太耗时间,
ok1234567 老兄的例子很好,学会了这个方法,测试某个技术的复杂度的话,循环n次,然后GetTickCount(),比较消耗时间就是了:)
nsdcnsdc 2008-10-18
  • 打赏
  • 举报
回复
用控制台做服务器端也不错呀
nooning 2008-10-16
  • 打赏
  • 举报
回复
不从内存管理角度说,MFC是由类构成,访问类变量至少要多一是寻址,如果是使用了虚表那么访问函数至少也要多一次访问内存,而且每次调用类函数都会把类指针传给函数(根据不同的调用约定和实现方式可能有不同),虽然很微小,但频繁调会效率也会低些.

当然和JAVA .NET之类相比,这些多可以完全忽略,就像慧星碰地球一样。

楼上说的内存管理的效率要看如何实现了。

开发效率MFC 远高于SDK开发。

所以MFC那一点速度差别不会有太多人在乎,在核心算法上通常也只会用asm优化,相比之下SDK开发只是会浪费时间
ok1234567 2008-09-26
  • 打赏
  • 举报
回复
各位有兴趣的的话用你们的机器分别运行(注释)一下这个简单的函数,
看看CString 与char差多少,如果用到指针运算,差异会更大

void Test()
{
char sz[32];
time_t tm;
time(&tm);
for(int i=0;i<2000000;i++)
{

CString str;
str.Format("%d12345678900099"
"abcgffeeeeeeee"
"abcgffeeeeeeee"
"abcgffeeeeeeee"
"abcgffXYZEFGHI%d",
i,i+1);
str.Find("abcgffXYZEFGHI",0);
/*
char zz[256];
sprintf(zz,
"%d12345678900099"
"abcgffeeeeeeee"
"abcgffeeeeeeee"
"abcgffeeeeeeee"
"abcgffXYZEFGHI%d",
i,i+1);
strstr(zz,"abcgffXYZEFGHI");
*/

}

sprintf(sz,"%d",time(NULL)-tm);
AfxMessageBox(sz);

return ;
}
lhtang 2008-09-26
  • 打赏
  • 举报
回复
百万分之一的差别..
kevin0808 2008-09-26
  • 打赏
  • 举报
回复
差距应该很大
因为你惯用的mfc类都使用了大量的new和delete操作,这些对于网络服务器都是应该减少的操作,很消耗性能的
worlftki 2008-09-25
  • 打赏
  • 举报
回复
如果你有好的程序架构和算法,MFC的封装对你的代码性能是没有影响的。
如果做个类封装就会造成程序效率下降,大家一直用C开发好了,不是那回事。
stl 的 string 也是类封装,有谁证明比CString效率高,要说方便代码移植到是真的,你不可能把用MFC代码放Linux下编译。
你要确定代码不跨平台编译,MFC代码大胆用。
mars_man 2008-09-23
  • 打赏
  • 举报
回复
界面与核心分离吧,界面MFC,核心就别用了。
ok1234567 2008-09-23
  • 打赏
  • 举报
回复
个人认为:
能用基本数据类型处理的(包含结构),最好不要使用MFC类
比如CSting 与char *,效率差异在一倍以上
能直接调用API的,就不要调用 MFC 封装类

因为是服务器,资源总是特别有限,如果是客户端,就没有必要顾虑那么多了
JonathanS666 2008-09-23
  • 打赏
  • 举报
回复
不会差很多,主要是算法和架构。
danscort2000 2008-09-23
  • 打赏
  • 举报
回复
速度差不少
服务器类尽量少用类代码,那是效率低下的主要原因
特别是MFC库,在服务器开发中能不用就尽量不用
std库也一样的
sys0001 2008-09-22
  • 打赏
  • 举报
回复
效率应该相差不太大,只是静态编译时程序会大点,动态编译需要带MFC的DLL。

如果你非想用SDK开发,不妨可以使用WTL。
scq2099yt 2008-09-22
  • 打赏
  • 举报
回复
没有比较过
yayafu 2008-09-22
  • 打赏
  • 举报
回复
差万分之一吧
blackcat242 2008-09-22
  • 打赏
  • 举报
回复
这个主要取决你看的编程技术了,但是服务器很少有界面的
adriano119 2008-09-22
  • 打赏
  • 举报
回复
应该差吧很多吧
用WIN32开发聊天程序应该很麻烦吧
什么都得自己生成
wltg2001 2008-09-22
  • 打赏
  • 举报
回复
MFC比较大,但是并不是说它的效率就差啊
sxcong 2008-09-22
  • 打赏
  • 举报
回复
只要架构合理,完全没问题
wildfire还是用java写的呢,目前来讲是开源中最好的Jabber服务器,很多C写的都不如它。
greatws 2008-09-22
  • 打赏
  • 举报
回复
服务器还是用win32吧,没有界面一般不要用MFC

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧