【发布时间】:2021-10-22 15:18:11
【问题描述】:
在我的程序的构造函数中,我使用嵌套的std::vector<std::vector<float>> 生成了一个非常大的 2048 * 2048 个浮点数查找表。
查找表每次总是相同的,所以我想将此表写入文件以节省重新计算。
实现这一目标的最佳方法是什么?将值写入大标题是否最好,还是保存对象的二进制副本更明智?
提前致谢!
编辑:
如果有任何影响,也许它与分配内存所花费的时间有关,这是通过以下模式完成的:
dataStructure.resize(numberOfRows);
for (int i = 0; i < numberOfRows; i++)
dataStructure[i].resize(numberOfColumns);
其中数据结构是std::vector<std::vector<float>>
【问题讨论】:
-
生成需要多长时间?从磁盘加载它更快吗?
-
那么 16MB 的数据?这一点都不大,但我不会把它放到源代码中。
-
我不知道将它写入磁盘和从磁盘写入的最佳方式。这真的是我问题的主旨。也许这是分配内存的方式。它的分配方式如下:(请参阅有问题的编辑)。
-
有没有机会让编译器使用 constexpr 执行计算?或者离线执行计算并使用计算值初始化一个 constexpr。
-
“最佳”是主观的。最快的 I/O?最易读的代码?开发最少的努力?如果您将来需要彻底改变它,最灵活?如果对您的情况没有任何其他了解,我会说只是做一些有效且可以理解的事情。很有可能它足以满足您的需要。如果您担心性能等问题,请进行相应的测试。
标签: c++ lookup-tables