Тормознутость require (perl)

Модератор: Модераторы разделов

Аватара пользователя
nuclear17
Сообщения: 117
ОС: linux/mac/win

Тормознутость require

Сообщение nuclear17 »

Подгружаю с помощью require скрипты. В скриптах ничего запускающегося сразу (кроме других require) нету, только функции. Обнаружил что каждый require исполняется по 8мс можно ли его както ускорить?
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Тормознутость require

Сообщение IMB »

Если речь идёт о PHP то говорят, что require_once быстрее.
Спасибо сказали:
Аватара пользователя
nuclear17
Сообщения: 117
ОС: linux/mac/win

Re: Тормознутость require

Сообщение nuclear17 »

речь идет о перл
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Тормознутость require

Сообщение NickLion »

8мс на обращение к винту и парсинг скрипта - не так уж и много. Я не прав?
Спасибо сказали:
Аватара пользователя
nuclear17
Сообщения: 117
ОС: linux/mac/win

Re: Тормознутость require

Сообщение nuclear17 »

заметил что скорость работы require зависит от размера скрипта. Но это правило почему то распространяется только на мои скрипты. Подгружаю HTML::Template с помощью require, он грузится за какие то микросекунды, хотя весит раз в 7 больше моего скрипта, который грузится 9 мс
8мс на обращение к винту и парсинг скрипта - не так уж и много. Я не прав?

если бы скрипт был бы 1 было бы все равно, но их там штук 30 и образуется существенное падение производительности
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Тормознутость require

Сообщение Portnov »

Насколько я помню, у перла есть возможность скомпилировать модуль в байт-код и этот байт-код сохранить в файл для последующей загрузки. И вроде как use ... пробует найти сначала скомпилированный модуль, если не может — грузит из исходника. Понятно, что парсинг исходника дольше, чем загрузка байт-кода. И видимо, в дистрибутивах поставляются уже скомпилированные модули, так что они грузятся быстрее. В общем, ищите что-нибудь на тему «perl byte-compile module» или как-то так.

Правда, может я и ошибаюсь.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
nuclear17
Сообщения: 117
ОС: linux/mac/win

Re: Тормознутость require

Сообщение nuclear17 »

Код: Выделить всё

package main;
sub getsettings
 {
  my $dbh=shift;
  my $query="SELECT `set_name`,`set_value` FROM `$site_settings{'prefix'}_settings`";
  my $sth=$dbh->prepare($query);
  my %settings;
  my $res;
  $sth->execute();
  if($res=$sth->fetchrow_hashref)
   {
    do
     {
      $settings{$$res{'set_name'}}=$$res{'set_value'};
     }
    while($res=$sth->fetchrow_hashref);
   }
  $sth->finish();
  return \%settings;
 }
1;


вот такой скриптик подгружается 824µs, при том что HTML::Template подгружается за 949µs

Portnov писал(а):
11.10.2010 08:35
Насколько я помню, у перла есть возможность скомпилировать модуль в байт-код и этот байт-код сохранить в файл для последующей загрузки. И вроде как use ... пробует найти сначала скомпилированный модуль, если не может — грузит из исходника. Понятно, что парсинг исходника дольше, чем загрузка байт-кода. И видимо, в дистрибутивах поставляются уже скомпилированные модули, так что они грузятся быстрее. В общем, ищите что-нибудь на тему «perl byte-compile module» или как-то так.

Правда, может я и ошибаюсь.

модуль HTML::Template мне было лень ставить, так что байт кода его точно там нет.
Спасибо сказали:
Аватара пользователя
nuclear17
Сообщения: 117
ОС: linux/mac/win

Re: Тормознутость require

Сообщение nuclear17 »

Создал 2 скрипта
1й t.pl:

Код: Выделить всё

#!/usr/bin/perl
require 'test.pl';
print 'test';


2й test.pl (48 стр):

Код: Выделить всё

sub test{
 print 'lalala';
 print 'lalala';
 print 'lalala';
...
 print 'lalala';
}
1;


время подгрузки test.pl 722µs

Время подгрузки незначительно изменяется даже на 2х процессорном ксеноне


файл test.pl в 162 строки на ксеноне подгружается за 1.5 мс
Спасибо сказали:
Аватара пользователя
nuclear17
Сообщения: 117
ОС: linux/mac/win

Re: Тормознутость require

Сообщение nuclear17 »

Решено
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Тормознутость require

Сообщение Portnov »

Гм, и каким же образом?
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
nuclear17
Сообщения: 117
ОС: linux/mac/win

Re: Тормознутость require

Сообщение nuclear17 »

переводом скрипта на fast-cgi
Спасибо сказали: