更快的读入方式
请教论坛的各位前辈,文件里面数据形式是:
...
4{123 1234 12345 23456} !第一个数指定这括号里有几个数
3{1234 12345 12345} !第一个数是个位数,也就是说从第三个字符开始是数据
5{123 1234 12345 123456} !每行的数字个数可能有变化
...
用Fortran读入,我是这么实现的,但是效率比较低,想请教下大家有更好的写法吗?
ibeg = 1
do i = 1, nLines !nLines:行数
read(12, "(a128)") cLine
read(cLine(1: 1), *) n
read(cline(3: len_trim(cLine)-1), *) Aarray(ibeg : ibeg + n - 1)
ibeg = ibeg + n
end do
这样已经很好了,没有改进的余地。另一种就是修改输入文件,把大括号替换为空格。
li913 发表于 2021-10-21 14:30
这样已经很好了,没有改进的余地。另一种就是修改输入文件,把大括号替换为空格。
...
好吧那就没有办法了感谢感谢:-) do i = 1, nLines
read(12, "(i1,1x,a128)") n , cLine
read(cline(:len_trim(cLine)-1),*) Aarray(ibeg : ibeg + n - 1)
ibeg = ibeg + n
end do
这样少一个 read,但是我估计提升可能并不明显
IO的优化本身就没什么空间。
页:
[1]