ocehb: (Default)
[personal profile] ocehb


# perl -MBenchmark=timethese -de0
  DB<1> @a = map { int rand (1024) } 1..1024
  DB<2> sub A () { return (sort { $a <=> $b } @a)[-1]; }
  DB<3> sub B () { my $max = $a[0]; \
    foreach (@a[1..$#a]) { $max = $max > $_ ? $max : $_; } \
    return $max; }
  DB<4> timethese (10_000,{ 'A' => \&A,'B' => \&B })
Benchmark: timing 10000 iterations of A, B...
         A: 17 wallclock secs (16.34 usr +  0.00 sys = 16.34 CPU) @ 611.85/s (n=10000)
         B:  5 wallclock secs ( 3.81 usr +  0.00 sys =  3.81 CPU) @ 2623.29/s (n=10000)



такие дела. но для одноразового поиска пойдет.

Date: 2007-01-16 12:28 pm (UTC)
From: [identity profile] yanychar.livejournal.com
Читал... Много думал!

Date: 2007-01-16 01:41 pm (UTC)
From: [identity profile] amati-fi.livejournal.com
Doctor, vy luchshe pro trenirovku napishite!

Date: 2007-01-16 03:25 pm (UTC)
From: [identity profile] mpak666.livejournal.com
хм ну в принципе нормально, конечно цифра в 3 раза больше пугает, но сути нормально

А перебирает весь массив, сортируя, сравнивая, притом возможно не один раз (что за алг. сортировка в перле я точно не знаю)

Б проходиться и притом порой не всегда до конца :) тут как повезет :)

Date: 2007-01-16 04:43 pm (UTC)
From: [identity profile] thenexus6.livejournal.com
Я бы сказал наоборот по обоим пунктам :)
То, что А всего в три раза медленнее - это радует: сортировка реализована хорошо (по крайней мере для равномерно распределённых данных).
Б же проходит всегда до конца, но только один раз, поэтому работать будет всегда одно и то же время.

Profile

ocehb: (Default)
ocehb

January 2021

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 6th, 2026 10:54 am
Powered by Dreamwidth Studios