Тормознутость require (perl)
Модератор: Модераторы разделов
-
nuclear17
- Сообщения: 117
- ОС: linux/mac/win
Тормознутость require
Подгружаю с помощью require скрипты. В скриптах ничего запускающегося сразу (кроме других require) нету, только функции. Обнаружил что каждый require исполняется по 8мс можно ли его както ускорить?
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: Тормознутость require
Если речь идёт о PHP то говорят, что require_once быстрее.
-
nuclear17
- Сообщения: 117
- ОС: linux/mac/win
Re: Тормознутость require
речь идет о перл
-
NickLion
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Тормознутость require
8мс на обращение к винту и парсинг скрипта - не так уж и много. Я не прав?
-
nuclear17
- Сообщения: 117
- ОС: linux/mac/win
Re: Тормознутость require
заметил что скорость работы require зависит от размера скрипта. Но это правило почему то распространяется только на мои скрипты. Подгружаю HTML::Template с помощью require, он грузится за какие то микросекунды, хотя весит раз в 7 больше моего скрипта, который грузится 9 мс
если бы скрипт был бы 1 было бы все равно, но их там штук 30 и образуется существенное падение производительности
8мс на обращение к винту и парсинг скрипта - не так уж и много. Я не прав?
если бы скрипт был бы 1 было бы все равно, но их там штук 30 и образуется существенное падение производительности
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Тормознутость require
Насколько я помню, у перла есть возможность скомпилировать модуль в байт-код и этот байт-код сохранить в файл для последующей загрузки. И вроде как use ... пробует найти сначала скомпилированный модуль, если не может — грузит из исходника. Понятно, что парсинг исходника дольше, чем загрузка байт-кода. И видимо, в дистрибутивах поставляются уже скомпилированные модули, так что они грузятся быстрее. В общем, ищите что-нибудь на тему «perl byte-compile module» или как-то так.
Правда, может я и ошибаюсь.
Правда, может я и ошибаюсь.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
nuclear17
- Сообщения: 117
- ОС: linux/mac/win
Re: Тормознутость require
Код: Выделить всё
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
Создал 2 скрипта
1й t.pl:
2й test.pl (48 стр):
время подгрузки test.pl 722µs
Время подгрузки незначительно изменяется даже на 2х процессорном ксеноне
файл test.pl в 162 строки на ксеноне подгружается за 1.5 мс
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 мс
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Тормознутость require
Гм, и каким же образом?
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
nuclear17
- Сообщения: 117
- ОС: linux/mac/win
Re: Тормознутость require
переводом скрипта на fast-cgi