'A faster strptime?
I have code which reads vast numbers of dates in 'YYYY-MM-DD' format. Parsing all these dates, so that it can add one, two, or three days then write back in the same format is slowing things down quite considerably.
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()
Any suggestions how to speed it up a bit (or a lot)?
Solution 1:[1]
Is factor 7 lot enough?
datetime.datetime.strptime(a, '%Y-%m-%d').date() # 8.87us
datetime.date(*map(int, a.split('-'))) # 1.28us
EDIT: great idea with explicit slicing:
datetime.date(int(a[:4]), int(a[5:7]), int(a[8:10])) # 1.06us
that makes factor 8.
Solution 2:[2]
For an ISO-formatted timezone-free string, eg.: "2021-01-04T14:30:03.123":
datetime.datetime(int(d[:4]), int(d[5:7]), int(d[8:10]), int(d[11:13]), int(d[14:16]), int(d[17:19]), int(d[20:]))
Seems to run faster than strptime() and fromisoformat().
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Voy |
