2012/10/26 Михаил Монашёв <[email protected]>:
> Здравствуйте, 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:[email protected]
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
--
Best regards, Ruslan.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org