我想知道从 C 迁移到 shell 脚本的程序的性能会有多糟糕。
我有密集的 I/O 操作。
例如,在 C 语言中,我有一个从文件系统文件读取并写入另一个文件的循环。我在没有任何一致关系的情况下占用每条线的一部分。我正在使用指针来执行此操作。一个非常简单的程序。
在 Shell 脚本中,为了移动一行,我使用${var:(char):(num_bytes)}
. 处理完每一行后,我只需将其连接到另一个文件。
"$out" >> "$filename"
该程序执行以下操作:
while read line; do
out="$out${line:10:16}.${line:45:2}"
out="$out${line:106:61}"
out="$out${line:189:3}"
out="$out${line:215:15}"
...
echo "$out" >> "outFileName"
done < "$fileName"
问题是,C 处理一个 400MB 的文件需要半分钟,而 shell 脚本需要 15 分钟。
我不知道我做错了什么或没有在 shell 脚本中使用正确的运算符。
编辑:我不能使用 awk 因为没有模式来处理该行
我尝试评论“echo $out”>>“$outFileName”,但并没有变得更好。我认为问题在于 ${line:106:61} 操作。有什么建议么?
谢谢你的帮助。