The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

[Perl] Скорость выполнения eval блока (perl benchmark optimization)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: perl, benchmark, optimization,  (найти похожие документы)
Date: Sun, 28 Oct 2001 12:36:44 +0000 (UTC) From: Pavel Ammosov <apavel@isabase.philol.msu.ru> Newsgroups: fido7.ru.perl Subject: [Perl] Скорость выполнения eval блока SM> Дано: массив чисел @array. SM> Требуется: сумма элементов массива. SM> Вопрос: Является ли вариант SM> eval(join("+",@votes)) SM> менее эффективным чем простой цикл с суммировнием, а если да, то SM> в чем и на сколько? Да, строковой eval будет каждый раз перекомпилироватся, что приведет к большим тормозам. #!/usr/bin/perl -w use strict; use Benchmark; my @foo; for (1 .. 200) { push @foo, int(rand(300)); } timethese(-5, { # -5 это фича новых perl'ов. Значит исполнять 5 секунд, # минимум 'eval' => sub { my $sum = eval(join("+",@foo)) }, 'for' => sub { my $sum; for (@foo) { $sum += $_ }} , }); perl mt.pl Benchmark: running eval, for, each for at least 5 CPU seconds... eval: 5 wallclock secs ( 5.27 usr + 0.00 sys = 5.27 CPU) @ 919.54/s (n=4846) for: 6 wallclock secs ( 5.24 usr + 0.01 sys = 5.25 CPU) @ 8143.62/s (n=42754) Вариант с eval в 9 раз медленнее. SM>Другими словами, большой ли overhead у eval? У eval "строка" - да. у eval {block} - нет. -- Павел Аммосов, email: apavel@aha.ru, icq uin: 19210183 www: http://isabase.philol.msu.ru/~apavel/

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру