Почему цикл For в linux показывает меньшую производительность, чем в Solaris?

218
Arjun

У меня есть сценарий оболочки, который я запускаю как на Linux, так и на Sun Solaris, однако есть существенная разница во времени, которое требуется сценарию для выполнения.

Когда я отладил сценарий на обоих серверах с помощью 'set -x', я обнаружил, что цикл for, получающий вывод из оператора 'awk', занимает в Linux гораздо больше времени, чем в Solaris. после установки опции отладки я могу наблюдать построчное выполнение сценариев и наблюдать, что производительность в linux намного ниже, даже если на обоих серверах выполняется одинаковый набор строк.

Следующее является частью сценария, занимающего время:

for k in `awk ' ' StartAppTemp` 

Также я рассчитал время, затраченное на цикл for, используя следующую команду:

time `for k in `awk ' ' StartAppTemp`` 

O / P на Linux:

real 0m0.002s user 0m0.000s sys 0m0.003s 

О / п на Солярисе

real 0m0.00s user 0m0.00s sys 0m0.00s 

Здесь точность составляет всего 2 цифры после десятичной.

Полный сценарий:

for k in `awk ' ' StartAppTemp`;do ps -p $k >/dev/null; if test $? -eq 0 ; then echo "running"; else echo "Stopped"; fi; done; 

Есть ли способ повысить производительность в Linux?

0
Обе машины имеют одинаковые характеристики оборудования? Говорить о «значительном», когда речь идет о миллисекундах, звучит странно, или этот сценарий запускается каждую секунду на этих серверах? Seth 7 лет назад 1
Я не вижу различий в производительности от данных, которые вы опубликовали. `real 0m0.002s` округляет до` real 0m0.00s` - это фактически одинаковые значения. Вы также заявляете, что «после установки опции отладки я могу наблюдать построчное выполнение сценариев, и я наблюдаю, что производительность в linux намного ниже». Я не думаю, что вполне вероятно, что вы на самом деле можете * наблюдать * разницу в несколько тысячных долей секунды, что означает, что ваша разница в производительности отсутствует в выражении awk. Andrew Henle 7 лет назад 3

0 ответов на вопрос

Похожие вопросы