Сравнение производительности сценариев оболочки с высоким уровнем интерпретируемых Langs (C#/Java/и т. Д.)

StackOverflow https://stackoverflow.com/questions/4491908

Вопрос

Во -первых, это не предназначено для того, чтобы быть «лучше, невежественным неионовым военным потоком» ... но, скорее, мне обычно нужна помощь в принятии архитектурного решения / аргумента, чтобы выдвинуть моему боссу.

Пропустив детали - я просто хотел бы узнать и найти результаты любого, кто прошел некоторые сравнения производительности Shell с [вставьте язык программирования общего назначения (интерпретированный), например, C# или Java ...

Удивительно, но я потратил некоторое время на Google на поиск здесь, чтобы не найти ни одного из этих данных. Кто-нибудь когда-либо проводил эти сравнения в разных случаях использования; Нажимать базу данных, как в XYX # из петель, выполняющих различные типы запросов SQL (Oracle PREF, но MSSQL), такие как любой из Crud Ops, а также не попадает и вещи такого природы?

В частности - на данный момент мне нужно сравнить попадание оракула DB из сценария оболочки против, скажем, C# (опять же, любой GPPL, который интерпретируется, будет хорошо, даже более высокие уровни, такие как Python). Но мне также нужно знать о стандартных расчетах / инструкций / и т. Д.

Прежде чем спросить: «Почему бы просто не написать быстрый тест самостоятельно? Ответ: я был разработчиком Windows всю свою жизнь/карьеру и имею очень ограниченное знание сценариев оболочки - не говоря уже о *nix в целом .... Таким образом, задавая здесь вопрос от более опытных парней, будет полезным, не говоря уже о том, как мы находимся в ближайшем кнопотченному сроку, как есть;).

Это было полезно?

Решение

Когда -то давным -то, вы, старая, великая выстрела в компьютерном языке действительно включала в себя некоторые сценарии оболочки.

Итак, любезность Интернет -архив, с 2004 года -

Примечание У сценариев оболочки не было программ для многих тестов.

    Score Missing-Tests

Java 20     1

Perl 16     0

Python 16   0

gawk 12     6 

mawk 10     6 

bash 7      12  

Примечание Сценарии оболочки иногда могут быть маленькими и быстрыми :-)

"Обратить файл"

        CPU (sec)   Mem (KB)    Lines Code

bash    0.0670      1464        1

C gcc   0.0810    4064        59

Python  0.3869    13160       6

Другие советы

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

Как правило, скрипт оболочки - это просто какая -то логика клея, которая запускает утилиты, которые обычно составлены C или C ++. Если это так, может быть не так много, что можно сделать, чтобы ускорить ситуацию. Если ворчащая работа выполняется с помощью плохо написанной утилиты, она просто делает очень быстро потраченных усилий.

Тем не менее, Python или Perl будут намного быстрее, чем сценарий оболочки, но виртуальная машина или нативный код еще быстрее.

Поскольку вы не можете сообщить нам никаких подробностей, мы не можем оказать конкретную помощь.

Если вы хотите увидеть простую демонстрацию для сравнения, попробуйте мой Чисто-бэш-реализация hexdump и сравните это с реальной вещью:

$ time ./bash-hexdump /bin/bash > /dev/null
real    7m17.577s
user    7m2.570s
sys     0m14.745s
$ time hexdump -C /bin/bash > /dev/null
real    0m2.459s
user    0m2.260s
sys     0m0.176s

Одна из основных причин, по которой версия Bash - это то, что она считывает символ файла по символу, который необходим для обработки нулевых байтов (оболочки не очень хороши для обработки двоичных данных), но основная причина - скорость выполнения. Вот пример сценарий Python, который я нашел:

$ time ./hexdump.py /bin/bash > /dev/null
real    0m11.694s
user    0m11.605s
sys     0m0.040s

Я просто хотел бы узнать и найти результаты любого, кто прошел некоторые сравнения производительности ...

Случайный урок таких сравнений заключается в том, что конкретные детали имеют многое - много.

Не только конкретные детали задачи, но (не должны ли мы знать это как программистов) конкретные детали того, как написан сценарий оболочки.

Итак, можете ли вы найти кого -то, кто понимает этот язык оболочки и сможет проверить, что сценарий оболочки был написан эффективным образом? (Разве не было бы неплохо, если бы заменить пару линий взял его с 40 минут до 5 минут.)

Хотя это не включает в себя языки «оболочка» (он же SH/Bash/KSH/PowerScript), это относительно большой список «языковой [реализации] производительности», заполненного общинами и предостережениями. В любом случае, кто -то может наслаждаться этим.

http://benchmarksgame.alioth.debian.org/

Если вы пишете код и у вас есть опасения по поводу скорости обработки, вы должны писать код, который либо составлен непосредственно в сборку, либо составлен для современной виртуальной машины.

Но... Закон Мур, который повышает обработанную мощность каждые 18 месяцев, мне интересно: действительно ли необходимы требования к производительности? Даже интерпретированный код работает невероятно быстро в большинстве современных систем, и со временем он будет только лучше. Вам действительно нужны такие улучшения скорости, которые скомпилированный код даст вам?

Если ответ нет, то напишите в том, что делает вас счастливым.

Как упоминалось выше, вы не сможете выполнить запросы SQL из Shell. Языки, которые работают на виртуальной машине, займут немного времени из -за фактора виртуальной машины, но в противном случае разница должна быть незначительной.

Если вопрос действительно состоит в том, чтобы уменьшить его с 40 до 5 минут, я постараюсь выяснить, какая часть занимает большую часть времени. Если запрос работает в течение самого долгого времени, то переключение языка вам не очень поможет.

Опять же (без особых деталей в вопросе) я бы начал с изучения различных компонентов системы, чтобы увидеть, какой из них является узким местом.

Только что сделал этот очень простой эталон в моей системе, и результаты, как и ожидалось.

Сложите все целые числа от 1 до 50 000 и выходной ответ на каждом шаге

Bash: 3 секунды C: 0,5 секунды

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top