Programming 版 (精华区)

发信人: SwordLea (飞刀李), 信区: Programming
标  题: CString 的恶梦
发信站: 哈工大紫丁香 (Wed Jul 21 19:16:26 2004), 转信

在本期“程序大战”的实现过程中(代码见“第1小板凳”),利用
CString & sResult传参(引用方式),在结果保存过程中,使用了以下
方式:
    sResult += szBuf;
    以为凭借MFC对CString += 操作的优化可以提高代码执行效率,
但没有想到测试的结果是一场恶梦!在正式测试效率之前,我使用了
一个6M多的小文件测试,代码执行后相当前时间没有响应,让人怀疑
出现了死循环。反复检查程序都不得要领,只好报着听之任之的态度
等它运行完。经过了漫长的5分钟,才弹出来心仪已久的可爱对话框,
告诉我居然用了265891ms ! 当时也没有想到会是CString的问题,开
始单步Trace,逐条语句注释,才发现原来是CString这魔头在作祟!
遂用百试不爽的vector<char>保存中间结果,最后使用CString的
等号一次赋值,出人意料地只用了4521ms,不过5秒耶!
    其原因需要分析CString源代码,但希望这个结果以同学们以启迪!

--
    I came, I saw, I conquered ! — Caesar


※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.246.241]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.101毫秒