Есть ли какие-либо преимущества в производительности, которые могут возникнуть при использовании подпрограммы в Perl? - PullRequest
1 голос
/ 17 апреля 2020

Я новичок в Perl 5 и до сих пор понимаю, что подпрограммы хороши для повторного использования кода и разбивки длинных процедурных сценариев на более короткие и читаемые фрагменты. Что я хотел знать, так это то, что есть ли какие-то преимущества в производительности при использовании подпрограмм? Они заставляют код выполняться быстрее?

Взгляните на следующие фрагменты:

#!/usr/bin/perl 
print "Who is the fastest?\n"; 

по сравнению с этим;

#!/usr/bin/perl 

# defining subroutine 
sub speed_test { 
   print "Who is the fastest?\n"; 
} 

# calling subroutine ; 
speed_test();

Ответы [ 2 ]

5 голосов
/ 17 апреля 2020

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

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

Кроме того, как я отмечаю, почти каждый "Как я могу микро-оптимизировать код Perl?" вопрос, Perl не является высокопроизводительным языком, точка. Никогда не было, почти наверняка никогда не будет. Это не то, для чего он предназначен. Perl оптимизирован для скорости разработки, а не для скорости выполнения.

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

4 голосов
/ 17 апреля 2020

При использовании подпрограмм выигрыша в производительности нет. На самом деле, есть потеря производительности за их использование. Вот почему в коде с высокой скоростью оптимизации подпрограммы иногда «встроены».

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

Любой блок кода, который превышает 10 (или, возможно, 25 или 50?) Строк, как правило, должен разбиваться. Предел зависит от людей, которых вы спрашиваете.

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