LINUX.ORG.RU

на сколько быстр интерпретатор Python


0

0

хочу написать программу для обмена файлами в локалке (изобретаю велосипед в качестве тренинга). Т.е., допустим, перекачивать большие файлы с одного компа на другой. На С писать не охота. Хочу написать на Python. Как вы думаете, будет ли существенен проигрыш в производительности на Python по ср. с C в такой задаче? Там будет использоваться всего-то read/write из файла и send/recv в сеть и все это в цикле... На сколько эти операции будут медленнее? Как вообще python оптимизирует такие штуки, или будет интерпретировать один и тот же код при каждой итерации цикла?

anonymous

на столько, на сколько быстрым может быть интерпритатор по определению. /ох загнуууул :)/

> ли существенен проигрыш в производительности на Python по ср. с C в такой задаче

имхо в любой задаче... если ты *только* о производительности

Pi ★★★★★
()

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

Скорее всего большого падения производительности не будет.

> Там будет использоваться всего-то read/write из файла

Вызывается сишный код.

> и send/recv в сеть и все это в цикле

Насколько я понимаю, это модуль socket? В нем тоже используется сишный код.

> или будет интерпретировать один и тот же код при каждой итерации цикла?

Python компилирует весь исходник в байт-код _до_ начала выполнения программы.

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

DKorolkov
()

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

anonymous
()

Если задача - перекачка файлов между компьютерами, то узкое место будет (bottleneck как говорят буржуи) - будут операции ввода ввода. А сама программа будет бОльшую часть времени ждать эти IO операции. Так что в данном случае разница будет небольшая - кто будет ждать: интерпретатор или скомпилированный код.

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