ocehb: (Default)
[personal profile] ocehb

Встретил в одном проекте код:

my $curdate = `date +%F`; chomp($curdate); $variables::system{date} = $curdate; # текущая дата
my $curtime = `date +%T`; chomp($curtime); $variables::system{time} = $curtime; # текущее время


Подумал и написал сравнение:

# perl -MPOSIX=strftime -MBenchmark=cmpthese -e 'cmpthese($ARGV[0], {
   ''A'' => sub { my $a = `date +%F`; chomp $a; my $b = `date +%T`; chomp $b; },
   ''B'' => sub { my $a = strftime "%F", localtime; my $b = strftime "%T", localtime },
   ''C'' => sub { my @a = localtime; my $a = strftime "%F", @a; my $b = strftime "%T", @a; },
   ''D'' => sub { my ( $a, $b ) = split "::", strftime "%F::%T", localtime } } )' 100000 
      Rate     A     B     C     D
A   4021/s    --  -94%  -95%  -97%
B  71429/s 1676%    --  -11%  -55%
C  80000/s 1890%   12%    --  -50%
D 158730/s 3848%  122%   98%    --
#


Выводы:

1. `date +%F` -- избегать, тем более POSIX -- системный модуль.
2. POSIX::strftime -- тяжелый вызов, localtime (+ time) гораздо легче.


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 12:14 pm
Powered by Dreamwidth Studios