使用QFile的map映射文件,访问文件内容速度很慢

如题,代码如下
使用映射的文件指针遍历文件内容,这个循环所消耗的时候非常长,32M的文件循环8388608次要将近30秒,请大家给点意见


 QFile file(filename);
        if(!file.open(QIODevice::ReadOnly))
        {
            QMessageBox::information(NULL,tr("Error"),tr("Open failed"));
            return;
        }

        int sum = 0;

        uchar* ptr = file.map(0,file.size());

        for(int i = 0;i<file.size();i+=4)
        {
            sum += ptr[i];

        }
        result +=sum;

        file.unmap(ptr);
        file.close();

建议用流式遍历文件,且按照一行一行的遍历,代码如下:

QFile file(filename);
if(!file.open(QIODevice::ReadOnly))
{
  QMessageBox::information(NULL,tr("Error"),tr("Open failed"));
  return ;
}
QString line;
QTextStream in(&file);  // 用文件来构造流
line = in.readLine();  // 读取一行放到字符串里
qDebug() << line;
while(!line.isNull())  // 字符串中有内容
{
  line = in.readLine();  // 循环读取下一行
  qDebug() << line;
}
file.close();  // 文件读取完毕后,关闭文件

这样就可以不用一个一个的去读取了,流的方式读取是最快的。