VC6.0的STL在WinXP和Win2000下性能的差异

Jagen在路上 2004-08-27 11:36:42
最近给公司写一个图表控件,用于动态显示数据。我这这样做的,有两种显示方式,一种是线型图,一种是柱型图,在动态显示的时候,线型图需要一段连续的数据,而柱型图只需当前数据即可,但是可以同时显示多项数据,于是我就用了list和vector分别储存数据和数据项信息,类型定义如下
typedef std::list<long> _data_;
std::vector<_data_> m_data;
这样我每次向m_data对应的下标push_back一个数据就可以了,当数据超出所需要显示的范围,我就对m_data相应的下标pop_front一次,这样数据就一直是需要的数量,而不会因为时间过长而占用太多的内存。这是线型图的显示,我从末尾向前取数据,这样就可以画出当前的动态曲线了。而对于柱型图,数据区只需要一个数据就够用了,于是我在插入第一个数据之后,push_back一个数据都会pop_front一次,这样就相当于队列中只有一个1数据,在取数据的时候我就在前面取就可以了。这样没有什么问题,在WinXP下测试通过,但是到了Win2000下就不成了,线型图没有问题,问题出在柱型图上,显示完第一个数据之后就不动了,一直到输入了几次数据之后,才开始动,但是显示的确不是当前的数据,而是上几次的数据,也就是说pop_front没有起作用,在list中缓冲了数据,之后该为从后面取数据,问题解决了。但是这表明在WinXP下和在Win2000下STL性能表现有差异,Win2000会做缓冲,而WinXP不会。我没有在VC7.0下测试,不知道是不是也会是这样,希望有时间的朋友能测试一下。还有具体的原因我现在还不清楚,我的机器上没有Win2000,其他用Win2000的同事不是做开发的,机器上没有VC,我无法调试,我只是在表面现象上分析的,不过解决了。但是不清楚具体原因,希望有时间的朋友的可以测试一下,找出原因,或者知道原因的朋友踊跃回帖,谢谢!
...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2004-08-27
  • 打赏
  • 举报
回复
用用STLPort试试。
Jagen在路上 2004-08-27
  • 打赏
  • 举报
回复
没有测试过,不知道!
DentistryDoctor 2004-08-27
  • 打赏
  • 举报
回复
我觉得不会吧?不过VC6.带的STL性能的确无法与SGI STL相比。
liuxianzhi 2004-08-27
  • 打赏
  • 举报
回复
好贴,不过我也不明白原因。
flyelf 2004-08-27
  • 打赏
  • 举报
回复
用std::deque有没有这个问题呢
Jagen在路上 2004-08-27
  • 打赏
  • 举报
回复
怎么没有人参与了
Jagen在路上 2004-08-27
  • 打赏
  • 举报
回复
大家没有回答出问题的本质!不要以为VC7就比VC6优秀多少,VC7对标准的支持的确很好,但是增加了新的功能自然也会增加新的Bug!
zdleek 2004-08-27
  • 打赏
  • 举报
回复
用vc7

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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