[Moscow.pm] Конкурс

Ruslan Zakirov ruz на bestpractical.com
Пт Окт 26 09:13:29 PDT 2012


2012/10/26 Михаил Монашёв <postmaster на softsearch.ru>:
> Здравствуйте, Ruslan.
>
>> Еще не смотрел другие  решение, но вот мой вариант:
>
>> # этот блок кода надо ускорить
>> srand(123);
>> my $dots = 39293;
>> my (@color) = map Imager::Color->new(rand(255), rand(255), rand(255),
>> 255 ), (1..30);
>> my $dots_per_color = $dots/@color;
>> foreach my $color (@color) {
>>     $image->setpixel(
>>         x => [map rand(1024), 1..$dots_per_color],
>>         y => [map rand(1024), 1..$dots_per_color],
>>         color => $color
>>     );
>> }
>
>> Оригинальное:
>> Time: 1.1980619430542
>> File size: 344696
>> Result: 287711.334124571
>
>> Мое:
>> Time: 0.078991174697876
>> File size: 349384
>> Result: 4423076.39222125
>
>
> Твой вариант самый быстрый и дающий наилучший результат. Я
> немного доработал твой вариант:
>
> - srand(123);
> + srand(13);
>
> и получил больший размер файла при том же времени:
> File size: 366696
> а значит мой вариант лучше ;-)

Вот вам еще в два раза быстрее, но с хаком:

srand(13);
my $dots = 39293;
my (@color) = map Imager::Color->new(rand(255), rand(255), rand(255) ), (1..30);
my $img = $image->{'IMG'};
Imager::i_ppix($img, rand(1024), rand(1024), $_)
        for (@color)x($dots/@color);

:)

> --
> С уважением,
>  Михаил                          mailto:postmaster на softsearch.ru
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
Best regards, Ruslan.


Подробная информация о списке рассылки Moscow-pm