Мы столкнулись с определенным решением по разработке программ, которое нам нужно know-
Если и существуют ли различия в производительности
а. запуск нескольких (скажем, n = 40) экземпляров программы (скажем, n = 40); а также,
б. Изменение исходного кода программы достаточно, чтобы изменить его имя (например, программа называется XXXXX, и мы меняем исходный код и перекомпилируем и установим XXXX1, XXXX2, XXXX3.... до XXXX40) и запустите все они сразу.
Если да, то каковы эти различия?
Одно из отличий заключается в том, что если вы запускаете один и тот же двоичный код несколько раз, операционная система должна будет загружать только одну копию в память, и каждый исполняемый экземпляр будет совместно использовать части, доступные только для чтения (код, ресурсы и т.д.). Даже записываемые части будут доступны до тех пор, пока они на самом деле не будут написаны благодаря Copy on Write.
Если вы создаете кучу разных двоичных файлов, каждый файл должен быть загружен в память отдельно. Это увеличит использование памяти и время запуска процесса.
Являются ли эти эффекты достаточно значительными, чтобы беспокоиться, будут зависеть от особенностей вашей ситуации.
Только вы знаете, что вы подразумеваете под "эффективностью", так что сделайте свой собственный бенчмаркинг.
Вам не нужно менять исходный код программы, чтобы изменить ее имя. Просто:
$ cp myprogram myprogram2
Или, сделайте каждый элемент одним и тем же файлом:
$ ln myprogram2 myprogram
Я ожидал, что Linux сделает что-то умное, если вы запустили myprogram
и myprogram2
где оба являются ссылками на один и тот же файл. Однако всего за 40 одновременных случаев я был бы удивлен, если бы эффект был поддающимся измерению.
Однако я не вижу преимуществ в том, чтобы иметь разные имена. Запуск нескольких экземпляров одного и того же исполняемого файла - это обычная вещь.
fork()
?)