Qt的读取效率,如何提高???

addfourliu 2012-09-28 11:16:48

QFile file(szFilePath);
QTextEdit m_textEdit->clear();
if(file.open( QFile::ReadOnly| QFile::Text ))
{
QTextStream stream(&file);
while (!stream.atEnd())
{
QString szBuffer=stream.readLine();
m_textEdit->append(szBuffer);
}
}


明显当文件比较大的时候,多次的readLine()效率肯定不高,我们的想法一般都是增加一个缓冲区,求一个具体实现过程。。。
还有一个问题:大家一般都用什么方式查看代码的执行效率,比如说这一块代码一共执行了多少秒。。。
...全文
805 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
乔巴好萌 2012-10-02
  • 打赏
  • 举报
回复
查看代码执行效率做个计时器
如果一个代码段开销很小 可以for 一百万次 然后看看用了几毫秒
如果开销很大 直接计时器
乔巴好萌 2012-10-02
  • 打赏
  • 举报
回复
你使用readline那里没用引用 白白又operator =了一次
addfourliu 2012-09-29
  • 打赏
  • 举报
回复
有没有人用过 通过自定义缓冲区大小 来读取文件的。。。
jerryjjian 2012-09-29
  • 打赏
  • 举报
回复
想要提高效率,最好一次读入大块文件到内存,然后再内存中处理。不要用readline 之类的,效率很低,最好直接用readRawData 直接读取到内存。
liuwons 2012-09-28
  • 打赏
  • 举报
回复
可以增大缓冲区,还可以自己实现内存映射,将部分文件读入一个超大数组进行操作。
  • 打赏
  • 举报
回复
可以直接用偏移量哈。。时间是O(1)撒。用readRawData...
  • 打赏
  • 举报
回复
QVariant MyTableModel::data(const QModelIndex &index, int role) const
{
if( Qt::DisplayRole == role )
{
if( m_file->isOpen())
{
qDebug() << "data()";
char value[16];

if( role == Qt::DisplayRole )
{
int rowIndex = index.row();
int colIndex = index.column();
int pos = TOTALCOLCOUNT * rowIndex + colIndex;

m_file->seek( pos * 8 );

m_stream->readRawData( value, 8 );

QString strValue( value );

return strValue;
}
}
}
return QVariant();
addfourliu 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 3 楼 的回复:

引用 1 楼 的回复:

可以直接用偏移量哈。。时间是O(1)撒。用readRawData...


你的意思是利用偏移量,来控制每次从文件中读取多少数据,把这些数据放到内存中?

对的哈。悟性极高。因为数据是你自己存的嘛。你应该知道数据格式的。。而且一直把file打开。。也要不到好多时间。
[/Quote]
有没有代码可供参考。。。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

可以直接用偏移量哈。。时间是O(1)撒。用readRawData...


你的意思是利用偏移量,来控制每次从文件中读取多少数据,把这些数据放到内存中?
[/Quote]
对的哈。悟性极高。因为数据是你自己存的嘛。你应该知道数据格式的。。而且一直把file打开。。也要不到好多时间。
addfourliu 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

可以增大缓冲区,还可以自己实现内存映射,将部分文件读入一个超大数组进行操作。
[/Quote]

实现内存的映射?有没有代码可以参考一下。。。
addfourliu 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

可以直接用偏移量哈。。时间是O(1)撒。用readRawData...
[/Quote]

你的意思是利用偏移量,来控制每次从文件中读取多少数据,把这些数据放到内存中?

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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