|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 21 Mar 2002 20:29:14 To : Artem Chuprina Subject : Re: вопрос -------------------------------------------------------------------------------- Artem Chuprina wrote: > А если у тебя $a уже defined, то проверить ее на неравенство пустой > строке быстрее, чем вычислить длину. Длины скаляров в Перл (в отличие от, скажем, С) хранятся в самом скаляре (SV). Посему функция length в сущности ничего и не вычисляет: ---------------- test.pl --------------------- #!/usr/bin/perl -w use strict; use Benchmark; my $a = ''; timethese 3000000, { 'NE' => sub { $a ne '' }, 'LENGTH' => sub { length $a } }; $a = 'x' x 100; timethese 3000000, { 'NE' => sub { $a ne '' }, 'LENGTH' => sub { length $a } }; --------------------- EOF -------------------- Benchmark: timing 3000000 iterations of LENGTH, NE... LENGTH: 1 wallclock secs ( 0.45 usr + 0.00 sys = 0.45 CPU) @ 6666666.67/s (n=3000000) NE: 1 wallclock secs ( 0.87 usr + -0.01 sys = 0.86 CPU) @ 3488372.09/s (n=3000000) Benchmark: timing 3000000 iterations of LENGTH, NE... LENGTH: 1 wallclock secs ( 0.41 usr + 0.00 sys = 0.41 CPU) @ 7317073.17/s (n=3000000) NE: 1 wallclock secs ( 0.76 usr + 0.00 sys = 0.76 CPU) @ 3947368.42/s (n=3000000) Андрей --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/5284eae936c8.html, оценка из 5, голосов 10
|