Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

Когда-то давно вы были старыми. Переименование Great Computer Language Shootout включало некоторые сценарии оболочки.

Итак, любезно предоставлено Интернет-архив, с 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

Ответ 2

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

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

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

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

Если вы хотите увидеть простую демонстрацию для сравнения, попробуйте выполнить pure- Bash реализацию 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 script, который я нашел:

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

Ответ 3

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

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

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

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

Ответ 4

В то время как это не включает языки "Шелл" (aka sh/ bash/ksh/powerscript), это относительно большой список "языковой [реализации]", заполненный общими и оговорками. В любом случае, кто-то может наслаждаться этим.

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

Ответ 5

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

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

Если ответ отрицательный, тогда напишите, что делает вас счастливым.

Ответ 6

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

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

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

Ответ 7

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

Добавьте все целые числа от 1 до 50000 и ответ на каждый шаг

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