2014-10-14 1 views
0

Мы столкнулись здесь с определенной программой-дизайнерским решением, которое необходимо нам ноу-Запуск той же программы с 40 различными идентификаторами Vs. запуская 40 экземпляров программы. За и против?

  1. Если и есть ли вы производительность мудра различие между

    с. запуск нескольких (скажем, n = 40) экземпляров программы (скажем, n = 40); и,

    b. Изменение исходного кода программы достаточно, чтобы изменить его имя (например, программа называется XXXXX, и мы меняем исходный код и перекомпилируем и установим XXXX1, XXXX2, XXXX3 .... до XXXX40) и запустите все они сразу.

  2. Если да, то каковы эти отличия?

+0

А? (И что это связано с 'fork()'?) – DevSolar

+0

Потому что те, кто развивают программу и запускают раздвоенный вместе с оригиналом, могут это знать. (Это то, что я подумал. Вы можете различать. Дать причину разницы может помочь мне узнать несколько вещей. Спасибо заранее. :) Cheers!) – rinfinity

+0

Hardcoding все, что предназначено для изменения между прогонами, является достаточной причиной для дисквалификации B. –

ответ

2

Отличие заключается в том, что если вы запускаете те же двоичные несколько раз, операционная система должна будет загрузить только одну копию в память, и каждый запущенный экземпляр будет делиться только для чтения части (код, ресурсы и т.д.). Даже записываемые части будут разделяться до тех пор, пока они не будут записаны на основе Copy on Write.

Если вы создаете кучу разных двоичных файлов, каждый файл должен быть загружен в память отдельно. Это увеличит использование памяти и время запуска процесса.

Являются ли эти эффекты достаточно значительными, чтобы беспокоиться о них, будут зависеть от особенностей вашей ситуации.

+0

Дело в том, что для управления указанной программой нам необходимо использовать протокол DBus. И насколько я знаю, если вы используете Dbus, у вас может быть только один экземпляр программы. Изменяет ли название программы так, как вы показали, будет служить моей цели (так что мне не нужно возиться с исходным кодом)? Заранее спасибо. – rinfinity

0

Только вы знаете, что вы подразумеваете под «производительностью», так что сделайте свой собственный бенчмаркинг.

Вам не нужно изменять исходный код программы для изменения ее имени. Просто:

$ cp myprogram myprogram2 

Или сделать каждый элемент, один и тот же файл:

$ ln myprogram2 myprogram 

Я бы предвосхитить Linux делать что-то умное, если вы запускали myprogram и myprogram2, где и ссылки на тот же файл. Однако всего за 40 одновременных случаев я был бы удивлен, если бы эффект был поддающимся измерению.

Я не вижу преимуществ в том, чтобы иметь разные имена. Запуск нескольких экземпляров одного и того же исполняемого файла - это обычная вещь.

+0

Дело в том, что нам нужно использовать протокол DBus для управления указанной программой. И насколько я знаю, если вы используете Dbus, у вас может быть только один экземпляр программы. Изменяет ли название программы так, как вы показали, будет служить моей цели (так что мне не нужно возиться с исходным кодом)? Заранее спасибо. – rinfinity

 Смежные вопросы

  • Нет связанных вопросов^_^