LINUX.ORG.RU

[Scripting] Shell vs Python в плане производительности


0

0

Интересует насколько медленнее работает пайтон по сравнению с шеллом (для конкретики возьмем bash, но без башизмов) и медленнее ли? Цели общесистемный скриптинг. Хочу для себя решить окупается ли падение производительности (если оно есть) легкостью написания скриптов.

★★★★★

питон позволяет делать обвязку для более гибкого управления скриптами
например , асинхронная работа с помощью спавн-процессов

kto_tama ★★★★★
()
Ответ на: комментарий от kto_tama

Ууууу… Я только начал изучать пайтон, до таких тонкостей мне еще далеко.

fat_angel ★★★★★
() автор топика

>насколько медленнее работает пайтон по сравнению с шеллом

скорее насколько медленнее работает шелл по сравнению с питоном

dimon555 ★★★★★
()

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

urxvt ★★★★★
()

сфера применения слишком расплывчата
тут нужно сравнивать производительность пистона и обильно форкающихся шел+авк+сед+т.д.+т.п.

hizel ★★★★★
()

Могу сказать, что шел-скрипт обрабатывавший входной файл размером <1Кб в течение 1 часа, будучи переписан на перл один к одному, т.е. алгоритм не изменился, стал отрабатывать за 1.5 секунды, на той же системе.
Ну а на сколько питон медленнее перла ты выясни сам, в крайнем случае ЛОР-аналитики помогут.

sdio ★★★★★
()
Ответ на: комментарий от hizel

>сфера применения слишком расплывчата

Если конкретизировать то сейчас меня данный вопрос интересует в применении к собственному велосипеду для автомонтирования через udev. Пара строк казалось бы, но я хочу сделать в нем поддержку различных файловых систем, простенький конфиг-файл и прочие плюшки и получается, что во-первых парой строк не отделаться, а во-вторых на пайтоне со всеми его модулями такое реализуется намного проще.

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

fat_angel ★★★★★
() автор топика
Ответ на: комментарий от sdio

>что шел-скрипт обрабатывавший входной файл размером <1Кб в течение 1 часа

Что он делал? О_О

>стал отрабатывать за 1.5 секунды, на той же системе.


Окей все понятно

>Ну а на сколько питон медленнее перла ты выясни сам, в крайнем случае ЛОР-аналитики помогут.


Так ведь если верить этим самым аналитикам, ветка пайтона 2.х как раз таки быстрее перла. Нэ?

fat_angel ★★★★★
() автор топика
Ответ на: комментарий от Turbid

> Ну а на сколько питон медленнее перла

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

kto_tama ★★★★★
()
Ответ на: комментарий от fat_angel

что шел-скрипт обрабатывавший входной файл размером <1Кб в течение 1 часа

Что он делал? О_О

Там несколько таких циклов:

while ($i < $n) #for 1 pregs ==========================================================
    @ i++
    set line = `awk "NR == $i" {/tmp/prepreg1}`
    set mat = ($line)
    @ a = 1
    while ($a <= $#onze)
        @ b = 1
        while ($b <= $#copper)
            @ c = 1
            while ($c <= $#onze)
                @ d = 1
                while ($d <= $#copper)
                    @ record_counter++
[skip]
...
[/skip]

                    @ d++
                end
                @ c++
            end
            @ b++
        end
        @ a++
    end
end

sdio ★★★★★
()
Ответ на: комментарий от Turbid

>>Ну а на сколько питон медленнее перла

>Есть мнение что все наоборот.


Точно перл медленнее питона в 0.5 раза, например.

sdio ★★★★★
()

Проблем с производительность не было, python конечно может сожрать кучу ресурсов, если писать быдлокод, но пока проблем не было. Быстрее чем shell скриптинг и переносимость между Linux/FreeBSD.

xpahos ★★★★★
()

А что мешает написать два аналогичных скрипта - на шеле и на питоне, и замерить производительность?

h8 ★★★
()

Сильно зависит от задачи. Мало что можно сделать на шелле и пейтоне похожим образом.

melkor217 ★★★★★
()
Ответ на: комментарий от sdio

угу угу
вот был мой скрип три года назад писаный на пёрле, а давеча перепсал на пистоне и ускорил в 20-ть раз, а вы говорите 0.5 ^_^

hizel ★★★★★
()
Ответ на: комментарий от sdio

>>> Ну а на сколько питон медленнее перла >> Есть мнение что все наоборот. > Точно перл медленнее питона в 0.5 раза, например.

:) прикольно. т.е. в таком случае питон быстрее перла в два раза.

rha
()

> Хочу для себя решить окупается ли падение производительности (если оно есть) легкостью написания скриптов.

У меня обычно получается наоборот: на баше писать проще, но медленее. Хотя, от задачи зависит.

provaton ★★★★★
()
Ответ на: комментарий от rha

>> Точно перл медленнее питона в 0.5 раза, например.

>:) прикольно. т.е. в таком случае питон быстрее перла в два раза.

Я бы сначала попытался разобраться что такое "медленнее в 1.0 раз" с помошью индукции от "медленнее в 2.0 раза".

Absurd ★★★
()
Ответ на: комментарий от Absurd

Если перл медленее питона в 0.5 раз, это значит, что перл быстрее питона в 2 раза ;)

nbchtu
()
Ответ на: комментарий от Absurd

>>> Точно перл медленнее питона в 0.5 раза, например.

>>:) прикольно. т.е. в таком случае питон быстрее перла в два раза.

>Я бы сначала попытался разобраться что такое "медленнее в 1.0 раз" с помошью индукции от "медленнее в 2.0 раза".

тогда перл быстрее питона в два раза. у меня в голове от "медленнее" и "в 0.5 раза" коллизии начинаются :)

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

rha
()
Ответ на: комментарий от rha

> у меня в голове от "медленнее" и "в 0.5 раза" коллизии начинаются :)

тем более когда автор согласился, что перл медленнее питона..

rha
()
Ответ на: комментарий от h8

>А что мешает написать два аналогичных скрипта - на шеле и на питоне, и замерить производительность?

Лень же…

fat_angel ★★★★★
() автор топика

Ладно, тред потихоньку начинает перетекать в холивар perl vs python, поэтому всем спасибо, для себя я выбор сделал.

fat_angel ★★★★★
() автор топика

Питон стартует медленне, но интерпретатор питона сильно быстрее шелла и это надо учитывать. Только вот скрипты писать на нём не сильно удобно ибо вот такого в нём нет:

DATA="`someprog | grep .. | tail `"

Это реализуется через popen/subprocess, но читабельность падает.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

почему в треде до сих пор не посоветовали ruby?

нормальный синтаксис есть (включая backquotes), скорость тоже (у меня на синтетических тестах обгонял py3k, ну даже если в среднем не обгоняет, то величина того же порядка)

mholub
()
Ответ на: комментарий от mholub

Мне руби не нравится, потому и не советую :). Ну а про скорость всё написано сдесь: http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=python...

Тока какая скорость будет на реальных задачах зависит скорее от программиста. И скорость отнють не самый важный фактор, иначе бы весь мир писал на асме. Ну и щас есть всякие оптимизированные версии софта, для одного питона, например, есть и unladen swallow, psyco итп.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

> И скорость отнють не самый важный фактор, иначе бы весь мир писал на асме

Далеко не факт что твой аналог шелл-скрипта на асме будет работать быстрее, далеко не факт.

provaton ★★★★★
()
Ответ на: комментарий от Deleted

Если dash более простая штука, чем bash и тем более zsh, это отнюдь не значит, что dash-скрипты работают быстрее.
В zsh применяются, к примеру, различные сложные оптимизации, которые могут повлиять на скорость (сравнительно с dash).

anarquista ★★★★★
()
Ответ на: комментарий от Deleted

Один хрен, тормоза из-за форков внешних утилит.

sdio ★★★★★
()
Ответ на: комментарий от Deleted

Вот простой пример:

#!/bin/sh
a=0
while :; do 
    a=$(($a+1))
    [ $a -gt 500000 ] && break
done
time ./test.sh
real    0m2.281s
user    0m2.272s
sys     0m0.008s

#!/bin/sh
a=0
while /bin/true; do 
        a=$(($a+1))
    [ $a -gt 500000 ] && break
done

$ time ./test.sh

real    14m58.004s
user    3m46.814s
sys     11m29.971s

sdio ★★★★★
()
Ответ на: комментарий от sdio

> [ -- это builtin команда, а не /usr/bin/[

А почему у меня разница по времени получилась вдвое?

const86 ★★★★★
()
Ответ на: комментарий от sdio

> Там несколько таких циклов:

ну просто это неправильное использование шелла. Привычки других языков нельзя переносить на шелл. Нужно было большой пайп зафигачить..

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

> ну просто это неправильное использование шелла.
> Нужно было большой пайп зафигачить..


Лечу по фотографии.

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.