gpt4 book ai didi

c - 为什么 bash 比 C 快?

转载 作者:太空狗 更新时间:2023-10-29 15:50:24 24 4
gpt4 key购买 nike

<分区>

出于好奇,我在 Bash 和 C 之间做了一个临时基准测试:

#!/bin/sh

for i in `seq 1 10000`; do
true
done

在我的机器上,运行时间为 0.02 秒。极快。我的理解是 Bash 解析命令并运行 fork/exec。因此,我希望以下 C 版本更快,因为它不需要进行任何解析:

#include <unistd.h>

int main() {
char *const argv[] = { "/bin/true", NULL };

for (int i = 0; i < 10000; i++) {
pid_t pid = fork();
if (pid == 0) // child
execv(argv[0], argv);

int status = 0;
waitpid(pid, &status, 0);
}

return 0;
}

令我惊讶的是,这花了大约 8 秒!我想 Bash 可能会做一些聪明的优化,如果它有洞察力 true 只是一个空操作,根本不值得调用。所以我用 echo -n 和 sleep 0.0001 尝试了同样的实验,得到了相似的结果。这些命令肯定会被调用,但 Bash 没有 C 所具有的 fork/exec 开销。为什么 Bash 在这种情况下要快得多?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com