我对Fortran的典型使用始于读取未知大小的文件(通常为5-100MB)。我目前的数组分配方法涉及读取文件两次。首先确定问题的大小(分配数组),然后第二次将数据读入这些数组。
是否有更好的尺寸确定/阵列分配方法?我刚刚阅读了另一篇文章中的自动数组分配(例如下面的例子),这似乎更容易。
array = [array,new_data]
所有选项及其优缺点是什么?
答案 0 :(得分:6)
我会咬人,虽然这个问题正在徘徊在离场外面。您的选择是:
选项3是迄今为止最好的。在项目开始时需要额外考虑一下,大约一整行代码,以及浪费的时间和精力。您不必跳过HDF5或类似的重量级文件设计方法,只需采用足够的规则来持续文件内容的使用寿命。对于来自宇宙模拟的迭代迭代转储,一个家庭酿造的方法将会做(说实话,你是唯一一个看过它们的人)。对于以每TB大约100万美元的成本(卫星观测,海上地震痕迹,等)收集的数据,然后是HDF5或类似的东西。
选项1也没关系。这不像你必须等待磁带在读取之间回放。 (好吧,有些人会这样做,但是现在他们处于一个利基市场,如果要使用它们,解压缩系统通常会将文件从磁带移动到磁盘。)
选项2是一个faff。它也可能是表现最差的,但除了最大的文件之外,最糟糕的表现可能在最佳的纳米世纪之内。如果这对你很重要,那就检查一下。
如果您想要量化我的意见,请在您的硬件上运行您自己的实验。
PS我还不知道获得1TB卫星或地震数据的成本是多少,这是为支持论证而发明的事实。
答案 1 :(得分:0)
我想补充之前的答案: 如果您的数据具有常规结构并且可以在 txt 文件中打开它,请按 ctrl+end substract header 到行总数,它就在那里。虽然如果它很大,你可能会浪费时间打开它。