【问题标题】:fast conversion of a text file to arrays C++将文本文件快速转换为数组 C++
【发布时间】:2015-08-25 23:37:45
【问题描述】:

我一直在从事一个涉及大型高度图 (3000x3000 ~60MB) 的项目。 .我需要做的是将数据拆分为几个 200x200 数组(其中 15x15),然后分别保存(但这次以尽可能快的格式再次加载)。我尝试过使用流(我不太擅长 C++,所以不要排除流的想法),但速度非常慢。

可能有帮助的东西(基于我在寻找答案时看到的): 高度图以文本文件 (.asc) 的形式提供,其数字写成“125.123”,但没有“”。无论数字是多少(“0.123”和“100.123”),每个条目都有三位小数。据我所知,没有负数,并且高度图的大小是事先知道的(通常是3000x3000)。

所以我的问题本质上是:

  1. 最好的方法是什么? (最好没有提升等,但如果它有很大帮助,那为什么不)
  2. 什么格式(对于 200x200 数组)可以实现最快的加载时间?

任何帮助、想法、代码或链接/文献?

【问题讨论】:

  • 这在 Python 中要容易得多。为什么是 C++?
  • 通常瓶颈是磁盘。加载的最佳格式通常是最小的。它们的加载速度有多快?
  • 您的意思是“000.123”而不是“0.123”吗?如果不是,我不明白你的意思是 3 位小数
  • @Bharadwaj,程序的其余部分是 C++,所以使用它是有意义的。然而,这不是绝对必要的。是什么让 python 变得如此简单?
  • @tobi,我的意思是“0.123”,我的意思是小数点后面总是有三位数字。

标签: c++ arrays string file large-data


【解决方案1】:

第 2 部分

如果您将文件读回相同类型的系统(字节序),则使用二进制 blittable 格式。即存储 200 * 200 数组的直接二进制转储。我也会乘以 1000 并存储为整数,因为它们通常会稍微快一些(你没有提到值的范围,也没有提到所需的精度,单位是英尺、英里、纳米吗?)

【讨论】:

  • 它是一个真实世界的高度图,范围通常在 0-500 之间。谢谢你的提示,我会调查的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2012-02-18
相关资源
最近更新 更多