2014-04-27 6 views
2

Perl에서 가장 빠른 날짜 - 시간 변환 방법은 무엇입니까? 나는 날짜 명령만큼 빠르다는 것을 의미한다. 이것은 Perl의 날짜를 타임 스탬프로 변환하는 것이 정말 고통 스럽다는 점에서 매우 이상합니다. 나는 Date :: Parse, Time :: Piece, Date :: Time 모듈을 사용했다. 모두가 코드를 느리게 실행합니다.펄에서 가장 빠른 날짜 - 타임 스탬프 변환

일단 날짜를 변환하지 않고 코드를 실행하면 9 초 후에 끝납니다. 클래스 호출을 추가하고 변환을하면 48 초가 더 걸립니다. 2 가지 버전의 차이점 만 설명합니다. 나오긴 중 사용되는 모듈은 여기

my $tmst = str2time($each[0]." ".$each[1]);Date::Parse

두 변수가 파일에서 오는 그 중 하나가 날짜와 시간이 다른 것입니다. 너무 많은 다른 날짜 및 시간 형식을 지원하며, 추측하려고하기 때문에 은 아무도

답변

4

str2time 속도가 느린
감사 답변 Appriciate,

을이 변환을 할 수있는 빠른 방법을 알고 있나요하는 입력 형식 날짜 및 시간이 파싱되기 전에 나타납니다.

필요하지 않고 날짜 형식이 매우 단순한 경우 Perl 코어의 일부인 mktime과 같은 것을 사용하면 훨씬 빠릅니다. 이 벤치 마크는 640 %의 속도 향상을 보여줍니다.

#!/usr/bin/env perl 
use strict; 
use warnings; 
use POSIX qw(mktime); 
use Date::Parse qw(str2time); 
use Benchmark qw(cmpthese); 

sub to_stamp { 
    $_[0] =~ /\A(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})\z/ 
    and mktime($6, $5, $4, $3, $2-1, $1-1900); 
} 

print to_stamp('2014-04-27 12:17:30'), "\n"; 
print str2time('2014-04-27 12:17:30'), "\n"; 

cmpthese -1, { 
    to_stamp => q[ to_stamp('2014-04-27 12:17:30') ], 
    str2time => q[ str2time('2014-04-27 12:17:30') ], 
}; 
+0

이것은 언급 된 형식에서만 작동한다고 가정합니다. 다른 것을받을 가능성이 있습니다. 그래서 날짜는 "2014-04-27 12 : 17 : 30.507"또는 "2014-04-27 12:17:30"일 수 있습니다. 당신이 제안하는 정규식이 하나만 지원할 것 같습니다. 맞습니까? 감사합니다 –

+0

제 이전 코멘트를 무시하십시오. 코드를주의 깊게 읽을 때 바보 같은 질문이었던 것 같습니다. –

+0

날짜와 시간이 항상 같은 형식으로되어 있다고 가정하고 필요에 따라 정규 표현식을 조정하십시오. – tobyink