首先 - 这并不是要成为“更好,无知的非离子战争线程”……而是,我通常需要帮助做出建筑决策 /论证来提出我的老板。

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

令人惊讶的是,我花了一些时间在Google上搜索在这里找不到任何数据。有没有人在不同的用例中进行过这些比较;击中数据库,例如在XYX#中进行不同类型的SQL(Oracle Pref,但MSSQL会做的)查询,例如任何CRUD OPS - 也不会击中数据库,并且只需键入数据库,并且只是常规的50K循环类型比较进行不同类型的计算。 ,和那种性质的事物?

特别是 - 目前,我需要比较从shell脚本vs击中Oracle DB的比较,可以说C#(同样,任何解释的GPPL都可以,甚至是较高级别的GPPL,例如Python)。但是我还需要了解标准编程计算 /指令 /等...

在问'为什么不只是自己写一个快速测试?答案是:我一直是Windows开发人员的一生/职业生涯,并且对壳牌脚本的了解非常有限 - 更不用说整个nix了。 因此,在这里提出的问题是有益的,这将是有益的,更不用说节省时间了,因为我们处于近乎渗透的截止日期紧缩状态;)。

有帮助吗?

解决方案

曾几何时,您的Olde Olde很棒的计算机语言枪战确实包含了一些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

其他提示

它高度依赖脚本在做什么。我看到写得不好的外壳脚本加快了一个,两个,甚至三个数量级,通过制作 简单的 变化。

通常,Shell脚本只是运行通常被编译C或C ++的实用程序的一些胶水逻辑。如果是这样,可能不会做太多来加速事情。如果编译的书面效用不佳的实用程序正在完成咕unt声,那么它只是在做很多浪费的努力。

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

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

如果您想查看一个简单的演示以进行比较,请尝试我 纯刺激的实施 hexdump 并将其与真实的事物进行比较:

$ 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版本之所以慢的主要原因之一是它按字符读取文件字符,这是处理null字节所需的(外壳不是很好地处理二进制数据),但主要原因是执行速度。这是一个例子 我发现的python脚本:

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

我只是想知道并找到任何做过一些表现比较的人的结果。

这种比较的持久教训是,特定细节很重要 - 很多。

不仅是任务的特定细节,而且(我们不应该以程序员的身份知道这一点)有关shell脚本的编写方式的特定细节。

那么,您能找到一个理解该外壳语言并可以以有效方式编写的Shell脚本的人吗? (如果更改几行从40分钟到5分钟,那不是很好。)

尽管这不包括“ shell”(又名sh/bash/ksh/powerscript)语言,但它是“语言[实现]绩效”的相对较大列表 - 充满了一般性和警告。无论如何,有人可能会喜欢它。

http://benchmarksgame.alioth.debian.org/

如果您正在编写代码,并且对处理速度有疑问,则应编写直接编译给汇编或为现代VM编译的代码。

...随着摩尔定律每18个月启动处理能力,我想知道:性能要求真的必要吗?即使解释的代码在大多数现代系统上也非常快,而且随着时间的推移会变得更好。您是否真的需要编译代码可以为您提供的那种速度改进?

如果答案是否定的,那就写任何让您开心的东西。

如上所述,您将无法从Shell中进行SQL查询。在VM上运行的语言将由于VM因子而提前一些时间,但否则差异应该可以忽略不计。

如果问题确实是要将其从40分钟减少到5分钟,那么我将尝试找出大部分时间都在大部分时间。如果查询在最长的时间内运行,则切换语言对您没有太大帮助。

再次(在问题中没有太多详细的细节)开始,首先要研究系统的不同组件,以查看哪个是瓶颈。

只是在我的系统上进行了非常简单的基准测试,结果是预期的。

将所有整数添加在1到50,000之间,并在每个步骤中输出答案

bash:3秒C:0.5秒

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top