Created
March 4, 2021 15:14
-
-
Save draganHR/65088f4e3a4c4dff1ebcc1d5080bb0d5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import timeit | |
from datetime import datetime | |
from dateutil import parser as dateutil_parser | |
from backports.datetime_fromisoformat import datetime_fromisoformat # backport for python < 3.7 | |
strformat = "%Y-%m-%dT%H:%M:%S.%f" | |
def main(): | |
datetime_now = datetime.utcnow() | |
str_now = datetime_now.isoformat() # ISO 8601 | |
assert dateutil_parser.parse(str_now) == datetime_now | |
assert dateutil_parser.isoparse(str_now) == datetime_now | |
assert datetime.strptime(str_now, strformat) == datetime_now | |
assert datetime_fromisoformat(str_now) == datetime_now | |
timeit_globals = { | |
'datetime': datetime, | |
'dateutil_parser': dateutil_parser, | |
'datetime_fromisoformat': datetime_fromisoformat, | |
'strformat': strformat, | |
'str_now': str_now, | |
} | |
number = 10000 | |
print(timeit.timeit("dateutil_parser.parse(str_now)", | |
globals=timeit_globals, number=number)) | |
print(timeit.timeit("dateutil_parser.isoparse(str_now)", | |
globals=timeit_globals, number=number)) | |
print(timeit.timeit("datetime.strptime(str_now, strformat)", | |
globals=timeit_globals, number=number)) | |
print(timeit.timeit("datetime_fromisoformat(str_now)", | |
globals=timeit_globals, number=number)) | |
if __name__ == '__main__': | |
main() | |
""" | |
$ python3 python_parsing_datetime.py | |
0.6838104360003854 | |
0.09205088900034752 | |
0.09850840099989 | |
0.001140635000410839 | |
""" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment