-
-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathbenmark_micro.py
More file actions
47 lines (41 loc) · 1.73 KB
/
benmark_micro.py
File metadata and controls
47 lines (41 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import time
import timeit
from datetime import datetime, timezone
utcnow = datetime.now(timezone.utc)
numbers = 1000000
# timeit_timeit = timeit.timeit(lambda: '%04d-%02d-%02dT%02d:%02d:%02dZ' % (
# utcnow.year, utcnow.month, utcnow.day, utcnow.hour, utcnow.minute, utcnow.second), number=numbers)
# print(timeit_timeit)
#
# timeit_timeit1 = timeit.timeit(lambda: '%04d-%02d-%02dT%02d:%02d:%02d.%03dZ' % (
# utcnow.year, utcnow.month, utcnow.day, utcnow.hour, utcnow.minute, utcnow.second, int(utcnow.microsecond / 1000)),
# number=numbers)
# print(timeit_timeit1)
#
# timeit_timeit2 = timeit.timeit(lambda: utcnow.strftime('%Y-%m-%dT%H:%M:%S.%fZ'), number=numbers)
# print(timeit_timeit2)
#
# timeit_timeit3 = timeit.timeit(
# lambda: '{:04d}-{:02d}-{:02d}T{:02d}:{:02d}:{:02d}Z'.format(utcnow.year, utcnow.month, utcnow.day,
# utcnow.hour, utcnow.minute, utcnow.second),
# number=numbers)
# print(timeit_timeit3)
_epoch = datetime(1970, 1, 1)
# python 3
# print(utcnow.timestamp())
# timeit1 = timeit.timeit(lambda: utcnow.timestamp(), number=numbers)
# print(timeit1)
# python 2
print(time.mktime(utcnow.timetuple()))
timeit1 = timeit.timeit(lambda: time.mktime(utcnow.timetuple()), number=numbers)
print(timeit1)
print((utcnow - _epoch).total_seconds())
timeit2 = timeit.timeit(lambda: int((utcnow - _epoch).total_seconds()) * 1000000000 + utcnow.microsecond * 1000,
number=numbers)
print(timeit2)
timeit3 = timeit.timeit(lambda: (int((utcnow - _epoch).total_seconds()) * 1000000 + utcnow.microsecond) * 1000,
number=numbers)
print(timeit3)
# 1456820553816849408
# 1496635859
# 1496637019171670000