如果我从bash脚本(相对于命令行)执行命令,是否会有所不同(例如,性能方面)?

纳撒尼尔

以下各项之间是否有任何区别(例如,性能方面):

$ make && cp bin/myexecutable inputfile.txt $workdir && cd $workdir
$ <series of sed commands to modify inputfile.txt>
$ mpirun -n 12 ./myexecutable [args]

与通过脚本进行操作相比:

myscript.sh:

#!/bin/bash
make && cp bin/myexecutable inputfile.txt $workdir && cd $workdir
<series of sed commands to modify inputfile.txt>
mpirun -n 12 ./myexecutable [args]

+

$ ./myscript.sh

问的原因是,我经常在工作站上运行多个(10-100个或更多)模拟作业。每个作业将在不同的工作目录中运行(并且具有不同的输入文件,并具有不同的参数集)-因此,对运行脚本编写脚本将使在大量参数上运行许多测试变得更加容易。一些模拟运行可能需要几天的时间。

绩效差异是否可以忽略不计(即<5-10%)?脚本(相对于命令行)是否可以看到不同的环境,从而导致出现问题?

吉勒斯“别再邪恶了”

执行mpirun命令行或脚本不会改变的性能mpirun命令都没有。唯一的性能差异是启动时间:运行脚本在启动时需要几毫秒(如果Shell可执行文件不在磁盘高速缓存中,则需要更多毫秒),而在命令行上键入则需要几秒钟,因此键入所有内容都需要花费几秒钟的时间。 。

您可以通过告诉外壳程序用正在运行的最后一个命令代替自身,而不用等待最后一个命令完成并立即终止来节省少量内存。替换mpirun …exec mpirun …

通过使用破折号而不是bash可以节省少量的启动时间。对于像mpirun这样的长期工作而言,两者之间的差异可以忽略不计。只有在启动许多小的Shell脚本的任务(例如引导Linux)中才能看到性能优势。

将命令放在脚本中有一个主要优点:可以设置一系列命令,并且如果要对这些命令进行一些调整,则只需要编辑文件即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SSH执行命令的方式有所不同

SSH执行命令的方式有所不同

当其他用户执行命令时,命令行为有所不同(通过su -c)

如果调用或通过tee,bash“ wc -l”命令输出会有所不同

bash getopts行为在while循环和命令行中有所不同

与bash命令行相比,rsync从QProcess运行的方式有所不同

Windows Bash和Windows命令行中的Git情况有所不同

相对于打包的Java命令行执行

为什么从函数调用Bash的“源”命令的行为会有所不同?

SVN通过Eclipse合并与命令行相比有所不同

msbuild与命令行vs Jenkins的行为有所不同

从Vim执行的Shell命令的行为有所不同

为什么使用不同的重定向方法执行命令的持续时间有所不同?

如果我使用宏与局部变量执行除法,为什么我的结果会有所不同?

以不同方式执行脚本时,import 的行为会有所不同吗?

这些从fget删除'\ n'的方法在性能方面是否有所不同?

如果在脚本内部调用,Rsync的行为会有所不同

Python获取相对于命令行用户的文件

如果我有IBOutlet作为约束,则复杂的UIView布局会有所不同

如果我使用 glFrustum,为什么绘制的这个对象会有所不同?

如果我运行gksu,则Gedit UI会有所不同:Ubuntu 16.04 Gnome Classic

从bash shell脚本中的glob从目录内的命令行执行命令

根据R脚本还是rmarkdown,使用readOGR的相对路径会有所不同

与perl一起使用时,包含git命令的Bash脚本的行为有所不同

在PDO中,如果将int引用为字符串,性能会有所不同吗?

如果在CDN调用上附加了“ http”,性能会有所不同吗?

当唯一的区别在于未执行的代码路径时,为什么性能会有所不同?

bash脚本,执行命令行并继续执行下一个for循环

如果我将脚本命名为“ string.py”或“ math.py”,则“导入”操作的行为会有所不同。为什么会这样呢?