Shell 脚本与高级解释型 langs(C#/Java/等)的性能比较

首先,这并不意味着是“哪个更好,无知的非离子战争线程”......但相反,我通常需要帮助来做出架构决策/论据,以向我的老板提出。

跳过细节 - 我只是很想知道并找到任何对Shell与[在此处插入通用编程语言(解释))进行一些性能比较的人的结果,例如C#或Java...

令人惊讶的是,我花了一些时间在Google上搜索这里,找不到任何这些数据。有没有人在不同的用例中做过这些比较;像在XYX中一样点击数据库#循环做不同类型的SQL(Oracle pref,但MSSQL会做)查询,例如任何CRUD操作 - 也没有击中数据库,只是常规的50k循环类型比较做不同类型的计算,以及那种性质的事情?

特别是 - 现在,我需要比较从shell脚本击中Oracle DB与C#(再次,任何被解释的GPPL都可以,即使是像Python这样的更高级别的GPPL)。但我还需要了解标准编程计算/说明/等...

在你问“为什么不自己写一个快速测试?答案是:我一生/职业生涯都是Windows开发人员,对Shell脚本的了解非常有限 - 更不用说整个*nix了。因此,从这里向更有经验的人提出这个问题将是有益的,更不用说节省时间了,因为我们正处于接近周转的最后期限紧迫,因为它;)。


答案 1

曾几何时,《伟大的计算机语言枪战》确实包含了一些shell脚本。

因此,由互联网档案馆提供,从2004年开始 -

请注意,shell 脚本没有用于许多测试的程序。

    Score Missing-Tests

Java 20     1

Perl 16     0

Python 16   0

gawk 12     6 

mawk 10     6 

bash 7      12  

注意外壳脚本有时可以小而快:-)

“反转文件”

        CPU (sec)   Mem (KB)    Lines Code

bash    0.0670      1464        1

C gcc   0.0810    4064        59

Python  0.3869    13160       6

答案 2

它高度依赖于脚本正在执行的操作。我见过写得不好的shell脚本通过进行简单的更改而加速了一个,两个甚至三个数量级。

通常,shell 脚本只是一些运行通常编译为 C 或 C++的实用程序的粘附逻辑。如果是这样的话,可能没有太多可以做的事情来加快速度。如果繁重的工作是由编译的写得很差的实用程序完成的,那么它只是非常快地做了很多浪费的努力。

也就是说,Python或Perl将比shell脚本快得多,但VM或本机代码将更快。

由于您无法告诉我们任何详细信息,因此我们无法真正提供具体帮助。

如果你想看到一个简单的演示进行比较,试试我的六进制转储的纯Bash实现,并将其与真实的东西进行比较:

$ time ./bash-hexdump /bin/bash > /dev/null
real    7m17.577s
user    7m2.570s
sys     0m14.745s
$ time hexdump -C /bin/bash > /dev/null
real    0m2.459s
user    0m2.260s
sys     0m0.176s

Bash版本速度慢的主要原因之一是它逐个字符读取文件,这是处理空字节所必需的(shell不太擅长处理二进制数据),但主要原因是执行速度。以下是我发现的Python脚本的示例:

$ time ./hexdump.py /bin/bash > /dev/null
real    0m11.694s
user    0m11.605s
sys     0m0.040s

推荐