无聊,用qt写了个股票数据提取软件,数据来源大智慧分笔数据,每日单个市场的数据文件大概100MB左右(暂时只针对深圳市场分析,所以100M只是深圳的数据文件大小),程序本身是多线程读取不涉及写操作(由于出问题,所以把多线程写入的部分给暂时屏蔽了),因为有问题,所以测试的时候都是只开了单线程读取,OK,基本应用环境就是这样。
软件的循环流程如下:
foreach (code ,stocklist)
{
foreach(singleDayData, alldayData)
{
读取操作
}
}
所以假设一共M个股票,需要提取N天的数据,则最外层的循环是M,内存循环是N。所以正常情况下,需要qfile open,close不同的数据文件 M*N次 。
问题来了,我现在提取一年的数据信息,大概也就提取几百个股票个数据信息以后,程序运行速度就会一下子变的很慢(cpu占用也变的很低,否则是基本占满),而且每次都并不是在循环到同一个股票位置开始变慢,具有很大的随机性。经过我定位是在读文件的时候速度变慢了,我用了下面这样一种语句来读取数据信息:
file.read((char*)&singleDay, 52);
奇怪的是,如果我让程序M*N次都从同一个文件读数据,就不会变慢;或者每次都是seek到各个文件的同一个位置以后再读,速度也不会变慢。
不知道有没有人遇到过类似的情况,指导解决思路的冒个泡吧