c - Shell 脚本 vs C 性能

标签 c performance bash shell

我想知道从 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} 操作。有什么建议么?

感谢您的帮助。

最佳答案

根据您的描述,我怀疑您正在 shell 脚本中生成新进程。如果是这样,那么这就是您的时间去向。 fork/exec需要大量操作系统资源一个新的过程。

关于c - Shell 脚本 vs C 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13088807/

相关文章:

sql-server-2005 - TSQL NOT EXISTS 为什么这个查询这么慢?

数据库网络延迟

bash - 变量中的 dos2unix

linux - 如何在 Linux 上创建 .jar 文件的快捷方式

c++ - 测试串口应用

c - 冒泡和插入之间的时间复杂度

c - 在 thrd_t 上调用 pthread 函数是否合法?

c++ - 用于 C/C++ 的小型开源 Unicode 库

javascript - 使用 .NET MVC 中的 Response.Filter 将所有 JavaScript 保留在页面底部

linux - 遍历文件并解析占位符变量