c++如何快速读取文件并获取其中的数据

qianheshang 2015-07-09 12:07:23

float x = 0;
float y = 0;
float z = 0;
float r = 0;
float g = 0;
float b = 0;
//analyse(buf, len, 5);
while (file.getline(buf, n + num))
{
sscanf_s(buf, "%f%f%f%f%f%f", &x, &y, &z, &r, &g, &b);
Point3D xx(x, y, z, RGB(&r, &g, &b));
Sample->push_back(xx);
}
这样读取文件要两秒多,怎么提高速度呢
...全文
851 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2015-07-09
  • 打赏
  • 举报
回复
引用 6 楼 qianheshang 的回复:
[quote=引用 5 楼 jianwen0529 的回复:] [quote=引用 3 楼 qianheshang 的回复:] [quote=引用 1 楼 jianwen0529 的回复:] 不是读取的问题 while (file.getline(buf, n + num)) { sscanf_s(buf, "%f%f%f%f%f%f", &x, &y, &z, &r, &g, &b); Point3D xx(x, y, z, RGB(&r, &g, &b)); Sample->push_back(xx); } 主要耗时在这两句我猜 预先分配vector大小,然后再push会快很多
我把那两句注释掉之后还是要1.5秒[/quote] 10多w行的数据不应该那么久啊,你是release下测试的时间吗?![/quote] 不是,release下是1秒,这个时间可以接受吗?我觉得还是略慢[/quote] 如果单单只是这句话的读文件,也不需要1秒吧,除非你的电脑是老古董
ztenv 版主 2015-07-09
  • 打赏
  • 举报
回复
先解决纯粹读文件的问题,然后再解决push_back()的问题
ztenv 版主 2015-07-09
  • 打赏
  • 举报
回复
引用 4 楼 qianheshang 的回复:
[quote=引用 2 楼 lianshaohua 的回复:] 如是楼上所讲,
有木有别的方法[/quote] 10W数据,不应该这么久,release下1秒也太久了,可以使用映射文件试试
qianheshang 2015-07-09
  • 打赏
  • 举报
回复
引用 5 楼 jianwen0529 的回复:
[quote=引用 3 楼 qianheshang 的回复:] [quote=引用 1 楼 jianwen0529 的回复:] 不是读取的问题 while (file.getline(buf, n + num)) { sscanf_s(buf, "%f%f%f%f%f%f", &x, &y, &z, &r, &g, &b); Point3D xx(x, y, z, RGB(&r, &g, &b)); Sample->push_back(xx); } 主要耗时在这两句我猜 预先分配vector大小,然后再push会快很多
我把那两句注释掉之后还是要1.5秒[/quote] 10多w行的数据不应该那么久啊,你是release下测试的时间吗?![/quote] 不是,release下是1秒,这个时间可以接受吗?我觉得还是略慢
幻夢之葉 2015-07-09
  • 打赏
  • 举报
回复
引用 3 楼 qianheshang 的回复:
[quote=引用 1 楼 jianwen0529 的回复:] 不是读取的问题 while (file.getline(buf, n + num)) { sscanf_s(buf, "%f%f%f%f%f%f", &x, &y, &z, &r, &g, &b); Point3D xx(x, y, z, RGB(&r, &g, &b)); Sample->push_back(xx); } 主要耗时在这两句我猜 预先分配vector大小,然后再push会快很多
我把那两句注释掉之后还是要1.5秒[/quote] 10多w行的数据不应该那么久啊,你是release下测试的时间吗?!
qianheshang 2015-07-09
  • 打赏
  • 举报
回复
引用 2 楼 lianshaohua 的回复:
如是楼上所讲,
有木有别的方法
qianheshang 2015-07-09
  • 打赏
  • 举报
回复
引用 1 楼 jianwen0529 的回复:
不是读取的问题 while (file.getline(buf, n + num)) { sscanf_s(buf, "%f%f%f%f%f%f", &x, &y, &z, &r, &g, &b); Point3D xx(x, y, z, RGB(&r, &g, &b)); Sample->push_back(xx); } 主要耗时在这两句我猜 预先分配vector大小,然后再push会快很多
我把那两句注释掉之后还是要1.5秒
ztenv 版主 2015-07-09
  • 打赏
  • 举报
回复
如是楼上所讲,
幻夢之葉 2015-07-09
  • 打赏
  • 举报
回复
不是读取的问题 while (file.getline(buf, n + num)) { sscanf_s(buf, "%f%f%f%f%f%f", &x, &y, &z, &r, &g, &b); Point3D xx(x, y, z, RGB(&r, &g, &b)); Sample->push_back(xx); } 主要耗时在这两句我猜 预先分配vector大小,然后再push会快很多

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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