Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обратится к области видимости места вызова функции 
:(
    Опции темы
DurRandir
Дата 26.1.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



>работавшего с php
smile:
PM   Вверх
arto
Дата 26.1.2010, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



perldoc perlpod не помогает?

все описано нормально и понятно, доступ к информации удобный.

не могли бы вы показать мне аналог perldoc -m для java?


ну хотя бы покажите мне рекомендацию не использовать $_...

PM MAIL ICQ   Вверх
Logo
Дата 26.1.2010, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



DurRandir спасибо, то что надо.

Цитата(mvsgt @  25.1.2010,  09:21 Найти цитируемый пост)

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

Не глобальная а локализованная везде, где можно. Теперь вот и локальной может быть, хотя от этого ИМХО только неприятности. Читаемость может улучшать, а может снижать, это уж как использовать. В больших скриптах тоже можно использовать, но только не надо далеко разносить ее заполнение значением и обработку. Это действительно снижает читаемость и чревато ошибкам. Юзать ее надо рядом с местом локализации, тогда читаемость улучшается.
На счет замедления в некоторых версиях тоже в первый раз слышу.
 

PM MAIL   Вверх
mvsgt
Дата 26.1.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Простой тест:
Код

#!perl -w
use strict;
use English;
use Benchmark ;
printf "OS name: %s, Perl version: %vd\n" ,$OSNAME, $PERL_VERSION;
my $count = 100000;
my $tests = 100;

Benchmark::cmpthese(
    $tests,
    {
        '$_:' => sub {
            foreach ( 1 .. $count ) {
                $_ = $_ . '';
            }
        },
        '$i:' => sub {
            foreach my $i ( 1 .. $count ) {
                $i = $i . '';
            }

        },
    }
);

print "\n" , '-'  x 60, "\n\n";



Результаты:
Код

OS name: MSWin32, Perl version: 5.6.1
Benchmark: timing 100 iterations of $_:, $i:...
       $_::  6 wallclock secs ( 5.81 usr +  0.00 sys =  5.81 CPU) @ 17.20/s (n=100)
       $i::  5 wallclock secs ( 4.88 usr +  0.00 sys =  4.88 CPU) @ 20.51/s (n=100)
      Rate  $_:  $i:
$_: 17.2/s   -- -16%
$i: 20.5/s  19%   --

------------------------------------------------------------

OS name: MSWin32, Perl version: 5.10.0
      Rate  $_:  $i:
$_: 17.3/s   -- -26%
$i: 23.4/s  36%   --

------------------------------------------------------------

OS name: linux, Perl version: 5.10.0
      Rate  $_:  $i:
$_: 15.7/s   -- -39%
$i: 25.8/s  64%   --

------------------------------------------------------------


Разница заметна?

А есть ещё my $_ и our $_ - и результат будет тоже интересный, особенно в разных версиях.

Это сообщение отредактировал(а) mvsgt - 26.1.2010, 23:07
PM MAIL   Вверх
Logo
Дата 26.1.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Пока не зачет. Замените либо $_ на my, либо $i на our. Результаты сравняются.
Код

foreach my $_ ( 1 .. $count ) { #...
foreach our $i ( 1 .. $count ) { #...

А так это доказывает лишь то, что лексические переменные здесь быстрее, чем динамические.
PM MAIL   Вверх
mvsgt
Дата 27.1.2010, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



а сделайте-ка мне my $_ в 5.6 . Получится? Я не зря писал про некоторые версии и тестировал именно эти самые некоторые, в которых ещё не было my $_.
$_ имеет смысл упоминать именно в том виде, в котором её все знают. Иначе встретятся чудеса (пример ниже), когда возникает потребность понять что за $_ будет использована. И тестировать производительность имеет смысл для тех случаев, которые встречаются в жизни. my $_ - не встречается.

PM MAIL   Вверх
Logo
Дата 27.1.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Цитата

а сделайте-ка мне my $_ в 5.6 . Получится? 

Там просто $i сделайте динамической и протестируйте.

Цитата

И тестировать производительность имеет смысл для тех случаев, которые встречаются в жизни. my $_ - не встречается.

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


PM MAIL   Вверх
mvsgt
Дата 28.1.2010, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Цитата(Logo @  27.1.2010,  13:14 Найти цитируемый пост)
Там просто $i сделайте динамической и протестируйте.


то есть я  должен начать доказывать утверждение, которого я не делал? Зачем?

Цитата(Logo @  27.1.2010,  13:14 Найти цитируемый пост)
Цитата

И тестировать производительность имеет смысл для тех случаев, которые встречаются в жизни. my $_ - не встречается.

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


Наоборот - я залез в мою установку перла и посмотрел, сколько модулей использует my $_ - один модуль, причём я так и не понял зачем. Так вот, я сначала сделал предположение, затем его проверил. Это правильный путь. Вы же ни того, ни другого не сделали. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.