Python vs Bash-在性能方面,每个任务胜过其他任务?
显然,Python更加用户友好,在Google上进行的快速搜索显示了许多结果,这些结果表明,由于Python是字节编译的,因此通常速度更快。我什至发现这声称可以在基于字典的操作上看到超过2000%的改进。
您对此事有何经验?每个人在哪种任务上都是明显的赢家?
-
典型的大型机流程…
Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer | ^ v | `--> COBOL Program --------'
典型的Linux流程…
Input Disk/SSD/User (runtime) --> sh/bash/ksh/zsh/... ----------> Output Disk/SSD/Screen/Printer | ^ v | `--> Python script --------' | ^ v | `--> awk script -----------' | ^ v | `--> sed script -----------' | ^ v | `--> C/C++ program --------' | ^ v | `--- Java program ---------' | ^ v | : :
外壳是Linux的粘合剂
像sh / ksh / bash / …这样的Linux shell提供输入/输出/流控制指定功能,就像旧的大型机Job Control
Language
…一样,但是在类固醇上!它们本身就是图灵完整的语言,同时经过优化以有效地与O
/ S支持的任何语言编写的其他执行过程之间有效地传递数据和控制。大多数Linux应用程序,无论程序的大部分语言是哪种语言,都取决于shell脚本,而 Bash
已成为最常见的应用程序。单击桌面上的图标通常会运行一个简短的 Bash
脚本。该脚本直接或间接知道所有所需文件的位置,并设置变量和命令行参数,最后调用程序。这是shell最简单的用法。然而,众所周知,如果没有成千上万的外壳脚本来启动系统,响应事件,控制执行优先级以及编译,配置和运行程序,几乎不会成为Linux。其中许多都是非常大而复杂的。
Shell提供了一个基础架构,使我们可以使用在运行时而不是编译时链接在一起的预构建组件。这些组件本身就是独立的程序,可以单独使用或以其他组合使用,而无需重新编译。调用它们的语法与
Bash 内置命令的语法没有区别,实际上,有许多内置命令,在系统上也有独立的可执行文件,这些命令通常具有其他选项。Python 和 Bash 在性能上没有语言范围的差异。这完全取决于每个编码方式以及调用哪些外部工具。
任何 众所周知的工具,例如 awk,sed,grep,bc,dc,tr 等,都将以任何一种语言进行操作。然后,对于没有图形用户界面的任何事物,
Bash 都是首选的,因为从 Bash之 类的工具中调用和传递数据比从 Python 那里更容易,更有效。性能
它的总体吞吐量和/或响应性是好于或差于等效的 Python* ,取决于 Bash
shell脚本调用的程序及其对子任务的适用性。使事情复杂化的是,与大多数语言一样, Python
也可以调用其他可执行文件,尽管它比较麻烦,因此不常用。 ***用户界面
一个领域 的Python 是明显的赢家是用户界面。这使其成为构建本地或客户端服务器应用程序的极佳语言,因为它本身支持GTK图形,并且比
Bash 直观得多。Bash 仅能理解文本。必须为GUI调用其他工具,并从其他工具传回数据。一个 Python的 脚本是一个选项。二进制文件(例如
YAD,Zenity和GTKDialog) 是更快但不太灵活的选项。虽然像 Bash 这样的shell可以与Yad,GtkDialog(GTK
+函数的嵌入式XML似的接口),dialog和xmessage等GUI很好地配合使用,但
Python的 功能更加强大,因此对于复杂的GUI窗口也更好。概要
使用Shell脚本进行构建就像使用台式机组装具有现成组件的计算机一样。
使用 Python , C ++ 或大多数其他语言进行构建更像是通过像智能手机一样将芯片(库)和其他电子零件焊接在一起来构建计算机。
最好的结果通常是通过使用多种语言来获得的,每种语言都可以尽其所能。一个开发人员称此为“多语言编程”。