отличный однострочник, спасибо

27.10.2013, 03:06, "Андрей П. Ковбович" <[email protected]>:
> Да смысла приводить бенчмарк нету. Вот здесь как раз приводится рецепт:
> http://www.effectiveperlprogramming.com/2010/05/comparing-stringish-dates-numerically/
>
> Единственно, в бенчмарке я погорячился с использованием регекспа для парсинга 
> даты так как на самом деле быстрее всего substr:
>
> perl -MBenchmark 
> -wE'my$d="27.06.2013";my$r2=qr/^(\d{2})\.(\d{2})\.(\d{4})$/;timethese(-1,{substr=>sub{my($dd,$mm,$yy)=(substr($d,0,2),substr($d,3,2),substr($d,6,4));my$dt="$yy-$mm-$dd"},rx=>sub{$d=~/$r2/;my$dt="$3-$2-$1"},split=>sub{my($dd,$mm,$yy)=split
>  m|\.|,$d;my$dt="$yy-$mm-$dd"}});'
> Benchmark: running rx, split, substr for at least 1 CPU seconds...
>         rx:  2 wallclock secs ( 1.05 usr +  0.00 sys =  1.05 CPU) @ 
> 327679.05/s (n=344063)
>      split:  2 wallclock secs ( 1.02 usr +  0.01 sys =  1.03 CPU) @ 
> 607349.51/s (n=625570)
>     substr:  0 wallclock secs ( 1.08 usr +  0.00 sys =  1.08 CPU) @ 
> 980238.89/s (n=1058658)
>
> 27 октября 2013 г., 2:44 пользователь Mons Anderson <[email protected]> написал:
>> Если у тебя 2 строки формата %Y-%m-%d %H:%M:%S, то быстрее чем cmp/lt/gt/eq 
>> у тебя никак не получится.
>> даже есть сделать вызов XS, и в нем memcmp, то получается как-то так:
>>
>> lt: 6354176.17/s
>> cmp: 6062612.68/s
>> xs: 4580193.05/s
>>
>> А вообще приведи бенчмарк целиком.
>>
>> On 26.10.2013, at 23:33, Андрей П. Ковбович <[email protected]> wrote:
>>
>>> Какой модуль или способ сейчас считается самым быстрым, чтобы сравнить две 
>>> даты формата YYYY-mm-dd HH:MM::SS? Как уложиться в 1 микросекунду?
>>>
>>> Benchmark: running Class::Date, Date::Manip, DateTime, Time::Piece for at 
>>> least 1 CPU seconds...
>>> Class::Date:  0 wallclock secs ( 0.89 usr +  0.13 sys =  1.02 CPU) @ 
>>> 13175.49/s (n=13439)
>>> Date::Manip:  1 wallclock secs ( 1.09 usr +  0.01 sys =  1.10 CPU) @ 
>>> 407.27/s (n=448)
>>>   DateTime:  1 wallclock secs ( 1.03 usr +  0.00 sys =  1.03 CPU) @ 
>>> 10437.86/s (n=10751)
>>> Time::Piece:  1 wallclock secs ( 1.01 usr +  0.00 sys =  1.01 CPU) @ 
>>> 179293.07/s (n=181086)
>>
>>> --
>>> Moscow.pm mailing list
>>> [email protected] | http://moscow.pm.org
>>
>> --
>> Moscow.pm mailing list
>> [email protected] | http://moscow.pm.org
>
> ,
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org

-- 
С уважением
Николай Мишин

-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить