接手一个程序,原来是打开一个20m左右的文件将数据存在一个vector的结构里再画图显示。现在想提升打开文件的速度,把打开文件部分做成多线程的,将文件分成多块分别用各个线程打开再存储到vector的相应位置。但是vector的接口貌似不能按指针位置存数据,比如像对数组那样第一个线程的数据存到array[0]开始的内存,后面的线程存到array[n]之后的内存。如果把vector这个存储结构改了的话vector的接口一变整个程序的改动量很大,不知道就保持这个结构或者这个结构的接口有没有办法?
解决方案 »
- 【Ribbon风格疑问】希望各位大大抽空看看
- 急求ODBC链接数据库出现SQLBindCol:Invalid descriptor index
- CComboBox 的绑定与取值问题
- 我做了一个activex控件放在一个view里,在activex控件里处理了单击事件,但是在view里怎么知道它被点击呢,我不希望是根据鼠标坐标来判断
- 播放器问题(MCIERR_ILLEGAL_FOR_AUTO_OPEN)
- 线程同步问题
- 高分:怎样通过ODBC读取UNICODE类型的字段!
- MFC的问题,问题不大,分却不少!
- 怎样用OLEDB访问ORACLE中NUMBER字段?
- WNetAddConnection2的使用
- 请教:如何把文本文件中的指定一行读入到一指定数组中
- 多次重绘窗口导致内存泄漏怎么解决??
不过多线程来读文件确实不能提升性能,最多把读文件操作放到一个单独的线程里面就够了,这种做法对提高性能的唯一作用就是可以把读文件时等待的时间用来做其它事(除了读同一磁盘设备之外)。
至于性能方面,其实我已经用内存映射处理待打开的文件了,但是对文件里每个数据的处理再存入vector结构还是很花时间,所以才想到用多线程试试能不能提升性能。
难道vector对这个方案真的无解?
改存储结构整个程序的改动量太大啊,作为一个试验实在不值得啊~~