BASH很慢吗?

Raj*_*kar 7 bash

我在SPOJ上解决了这个问题 - http://www.spoj.com/problems/ALICESIE/

问题归结为打印(n + 1)/ 2

这是我的C代码,传递0.03秒

    #include <stdio.h>
    int main() {
        int test, n;
        scanf("%d", &test);
        while(test--) {
            scanf("%d", &n);
            printf("%d\n", (n + 1) >> 1);
        }
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

虽然这是我的BASH代码,它超出了时间限制(即> 1s)

read test
while (( test-- ))
do
    read n
    echo "$(((n+1)/2))"
done 
Run Code Online (Sandbox Code Playgroud)

任何人都可以让我知道为什么会这样吗?BASH很慢吗?谢谢.

Dev*_*lar 5

Bash执行数字运算的速度很慢。但这不是Bash设计的目的。

Bash是非常快地煽动了一个脚本,用于自动化一些重复性的动作。修改错误的Bash脚本并再次运行它很快。迅速找出Bash脚本到底在做什么(相对于寻找要查找的C可执行文件的源代码而言)。

而这样的例子不胜枚举。

C和Bash是两种非常不同的语言和环境。如果您抱怨Bash运行缓慢,那么您将它用于错误的问题。

“不要抱怨螺丝刀在将钉子钉入墙壁时很烂。”


MMM*_*MMM 4

您正在将编译的代码与脚本语言(Bash)进行比较。

Bash 脚本总是比编译代码慢,因为它们需要解释。

您可能知道,为了运行用 C 编写的代码,您首先需要编译它。当涉及到 Bash 脚本时,您不必阅读它,代码只是“即时读取”。所以 Bash 比 C 慢。