使用40种不同的身份运行相同的程序'比。运行40个程序实例。优点和缺点?

时间:2014-10-14 16:46:42

标签: c++ linux unix fork multiple-instances

我们在这里遇到了一个需要我们知道的程序设计决策 -

  1. 是否以及

    之间是否存在性能差异

    一个。运行多个(比方说,n = 40)程序实例(例如,n = 40);和,

    湾更改程序的源代码仅足以更改它的名称(例如,程序名为XXXXX,我们更改源代码并重新编译并安装XXXX1,XXXX2,XXXX3 ....直到XXXX40)并运行所有这些都是一次性的。

  2. 如果是,那些差异是什么?

2 个答案:

答案 0 :(得分:2)

一个区别是,如果多次运行完全相同的二进制文件,操作系统只需要将一个副本加载到内存中,每个正在运行的实例将共享只读部分(代码,资源等)。由于Copy on Write,即使可写部分也会被共享,直到它们被写入。

如果你制作了一堆不同的二进制文件,那么每个文件都必须分别加载到内存中。这将增加内存使用量和进程启动时间。

这些影响是否足以令人担心,将取决于您的具体情况。

答案 1 :(得分:0)

只有你知道你的意思"表现",你自己的基准测试也是如此。

您不需要更改程序的源代码来更改其名称。只是:

 $ cp myprogram myprogram2

或者,将每个项目都设为相同的文件:

 $ ln myprogram2 myprogram

如果您运行myprogrammyprogram2并且两者都是指向同一文件的链接,我预计Linux会做一些聪明的事情。但是,对于少至40个同时发生的情况,如果效果可以测量,我会感到惊讶。

但是,我认为拥有不同的名字没有任何好处。运行相同可执行文件的多个实例是常见的事情。