2012-11-20 14 views
8

私は 'YYYY-MM-DD'形式で膨大な日付を読み取るコードを持っています。 1日、2日、または3日を追加して、同じ形式で書き戻すことができるように、これらの日付をすべて解析すると、かなり遅くなります。より速いstrptime?

3214657 14.330 0.000 103.698 0.000 trade.py:56(effective) 
3218418 34.757 0.000 66.155 0.000 _strptime.py:295(_strptime) 

day = datetime.datetime.strptime(endofdaydate, "%Y-%m-%d").date() 

どのようにビット(または多く)をスピードアップするには?

答えて

25

第7因子は十分ですか?

datetime.datetime.strptime(a, '%Y-%m-%d').date()  # 8.87us 

datetime.date(*map(int, a.split('-')))     # 1.28us 

EDIT:明示的なスライスと素晴らしいアイデア:

datetime.date(int(a[:4]), int(a[5:7]), int(a[8:10])) # 1.06us 

要因8.

+3

mwhhhahになります。私はあなたに憧れていると思う。 –

+3

コンテキスト内では、strptime = 128s、this = 61s、および55sでは明示的に:datetime.date(int(a [:4])、int(a [5:7])、int(a [8:10] )) ')。今、strftimeを置き換え、潜在的に別の10sをプルーニングする... thx。 –