python — ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠ΅ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΡΠΌΠΌΠ°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ time
ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ (ΡΠ°ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π° Π² shell):
$ time python -c 'import time; time.sleep(1)' python -c 'import time; time.sleep(1)' 0.01s user 0.00s system 1% cpu 1.021 total
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°, Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΠΠΈΡΠΎΠ½Π΅.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ cProfile
ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
$ python -m cProfile -s time your_module.py
Π Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ Π² KCachegrind ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠΎΠ»ΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²: How can you profile a script?
line_profiler
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅:
- timeit
- reporttime.py
- make-figures.py
- reporttime + pandas
Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ timeit
ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
$ python -m timeit -s 'from insertion_sort import sorted; L = list(range(10**5))' 'sorted(L)'
Π’ΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ pyperf
ΠΌΠΎΠ΄ΡΠ»Ρ (ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ):
$ python -m pyperf timeit -s '. ..' 'sorted(L)'
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ pyperf
Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ΄Π°ΡΡ.
ΠΠ»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ %timeit
magic Π² ipython/jupyter notebook ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠΈΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ ΡΡΠΎ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ (ΡΠ΅ΡΡΡ), ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΠ»ΠΈ Π΅Ρ ΡΠ°Π±ΠΎΡΡ (ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ pytest-benchmark
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΡΠΈΠΊΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ (
). Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ: sorted_selection
, sorted_insertion
, sorted_bubble
ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² daedra.py
ΡΠ°ΠΉΠ»:
#!/usr/bin/env python import random from reporttime import get_functions_with_prefix, measure import daedra funcs = get_functions_with_prefix('sorted_', module=daedra) for comment, L in [ ("all same", [1] * 10**3), ("range", list(range(10**3))), ("random", list(range(10**3)))]: if comment == "random": random.shuffle(L) measure(funcs, args=[L], comment=comment)
Π³Π΄Π΅ reporttime.py
. measure()
ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΡ
ΠΎΠΆΠΈΠΌ Π½Π° python -mtimeit
ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ
name time ratio comment sorted_insertion 184 usec 1.00 all same sorted_selection 55.9 msec 303.86 all same sorted_bubble 59.4 msec 322.92 all same name time ratio comment sorted_insertion 186 usec 1.00 range sorted_selection 57.7 msec 309.44 range sorted_bubble 60.8 msec 326.40 range name time ratio comment sorted_selection 58 msec 1.00 random sorted_insertion 66.2 msec 1.14 random sorted_bubble 119 msec 2.05 random
Π’Π°Π±Π»ΠΈΡΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π½Π° ΡΠΆΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²Π²ΠΎΠ΄Π΅ sorted_insertion()
ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΠΌ Π΄Π»Ρ sorted_selection()
ΠΈ sorted_bubble()
). ΠΠ»Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°Ρ. sorted_bubble()
Ρ
ΡΠΆΠ΅ Π²ΠΎ Π²ΡΠ΅Ρ
Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ
.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ @to_compare
, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ
Π΄Π»Ρ
ΡΠΊΡΠΈΠΏΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΡΠΎΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΈ. ΠΡΠΈΠΌΠ΅Ρ.
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π²Π²ΠΎΠ΄ΠΎΠ²:
#!/usr/bin/env python #file: plot_daedra.py import random def seq_range(n): return list(range(n)) def seq_random(n): L = seq_range(n) random.shuffle(L) return L if __name__ == '__main__': import sys from subprocess import check_call import daedra from reporttime import get_functions_with_prefix # measure performance and plot it check_call(["make-figures.py"] + [ "--sort-function=daedra." + f.__name__ for f in get_functions_with_prefix('sorted_', module=daedra) ] + [ "--sequence-creator=plot_daedra." + f.__name__ for f in get_functions_with_prefix('seq_') ] + sys.argv[1:])
seq_range()
, seq_random()
Π·Π°Π΄Π°ΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° Π²Π²ΠΎΠ΄Π° (ΡΠΆΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ). ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² seq_*(n)
ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°:
$ PYTHONPATH=. python plot_daedra.py --maxn 1024
PYTHONPATH=.
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ make-figures.py
ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ plot_daedra
ΠΌΠΎΠ΄ΡΠ»Ρ (Ρ seq_range
, seq_random
ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ) Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ.
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ n
, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² seq_(n)
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ
Π ΠΈΡΡΠ½ΠΊΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ sorted_insertion()
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²Π²ΠΎΠ΄Π΅ (seq_range
=0,1,2,3,4,…,n-1
). Π ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ΅ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌ Π²Π²ΠΎΠ΄Π΅ (seq_random
). ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄ log2(N)
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠ±Π»ΠΈΠΆΡΠ½Π½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²Π²ΠΎΠ΄Π°:
|------------------------------+-------------------| | Fitting polynom | Function | |------------------------------+-------------------| | 1.00 log2(N) + 1.25e-015 | N | | 2.00 log2(N) + 5.31e-018 | N*N | | 1.19 log2(N) + 1.116 | N*log2(N) | | 1.37 log2(N) + 2.232 | N*log2(N)*log2(N) |
Π‘ΠΎΠ±ΡΠ°Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ· daedra.py
(sorted_*()
) Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠΈΠΏΠΎΠ² (ΡΠΆΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ/ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ) ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π²Π²ΠΎΠ΄Π° (Π΄Π»ΠΈΠ½Ρ ΠΎΡ 1 Π΄ΠΎ 100000):
import random import daedra from reporttime import get_functions_with_prefix, measure_func times = {} # (function name, input type, exp size) -> time it takes for f in get_functions_with_prefix('sorted_', module=daedra): for N in range(6): for case, L in [ ("range", list(range(10**N))), ("random", list(range(10**N)))]: if case == "random": random.shuffle(L) times[(f.__name__, case, N)] = measure_func(f, [L])
Π£Π΄ΠΎΠ±Π½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ pandas.DataFrame
:
import pandas as pd df = pd. DataFrame([dict(function=f, input=i, size=10**n, time=t) for (f,i,n), t in times.items()])
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° ΡΠΆΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²Π²ΠΎΠ΄Π΅:
def plot_input(input): p = df[df.input==input].pivot(index='function', columns='size', values='time') p.T.plot(loglog=True,, title=input) # same style as in @MaxU's answer return p plot_input('range')
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌ Π²Π²ΠΎΠ΄Π΅:
plot_input('random')
ΠΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π²Π²ΠΎΠ΄Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π³ΡΠ°ΡΠΈΠΊΠ΅:
p = df[df.function=='sorted_insertion'].pivot(index='input', columns='size', values='time') p.T.plot(loglog=True,, title='sorted_insertion')
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ jupyter notebook.
ΠΠ·ΠΌΠ΅ΡΡΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² Python
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² Python.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
timeit
ΠΌΠΎΠ΄ΡΠ»ΡPython timeit
ΠΠΎΠ΄ΡΠ»Ρ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π°.
timeit()
ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ number
ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π½ΠΎ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ. ΠΠ½ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° Π½Π° Π²ΡΠ΅ΠΌΡ.1 2 3 4 5 6 7 8 | import timeit import time Β if __name__ == ‘__main__’: Β Β Β Β Β t = timeit.timeit(lambda: time.sleep(1), number=5) Β Β Β Β print(t) Β |
Β
The timeit
ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, repeat()
, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ repeat
ΡΡΠΈΡΠ°ΡΡ ΠΈ number
ΠΊΠ°Π·Π½ΠΈ.
1 2 3 4 5 6 7 8 | import timeit import time Β if __name__ == ‘__main__’: Β Β Β Β Β t = timeit. repeat(lambda: time.sleep(1), repeat=10, number=5) Β Β Β Β print(t) |
Β
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ timeit.default_timer()
.
1 2 3 4 5 6 7 8 9 10 11 | import timeit import time Β if __name__ == ‘__main__’: Β Β Β Β Β start = timeit.default_timer() Β Β Β Β time.sleep(1) Β Β Β Β end = timeit.default_timer() Β Β Β Β Β print(f»Time taken is {end — start}s») Β |
Π‘ΠΊΠ°ΡΠ°ΡΡΒ Β ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
time
ΠΌΠΎΠ΄ΡΠ»ΡΠΠ°ΡΠΈΠ½Π°Ρ Ρ Python 3.3, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ time.perf_counter()
ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡ Ρ ΡΠ°ΠΌΡΠΌ Π²ΡΡΠΎΠΊΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π’Π°ΠΉΠΌΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ timeit default_timer()
Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ time.perf_counter()
.
1 2 3 4 5 6 7 8 9 10 | import time Β if __name__ == ‘__main__’: Β Β Β Β Β start = time.perf_counter() Β Β Β Β time.sleep(1) Β Β Β Β end = time.perf_counter() Β Β Β Β Β print(f»Time taken is {end — start}») Β |
Π‘ΠΊΠ°ΡΠ°ΡΡΒ Β ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄
Β
Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ time.time_ns()
ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
Ρ Π½Π°ΡΠ°Π»Π° ΡΠΏΠΎΡ
ΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ.
1 2 3 4 5 6 7 8 9 10 | import time Β if __name__ == ‘__main__’: Β Β Β Β Β start = time. time_ns() Β Β Β Β time.sleep(1) Β Β Β Β end = time.time_ns() Β Β Β Β Β print(f»Time taken is {end — start}ns») Β |
Π‘ΠΊΠ°ΡΠ°ΡΡΒ Β ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
datetime
ΠΌΠΎΠ΄ΡΠ»ΡΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Π° Π²ΡΡΠΎΠΊΠ°Ρ ΡΠΎΡΠ½ΠΎΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ datetime.now()
ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
1 2 3 4 5 6 7 8 9 10 11 | from datetime import datetime import time Β if __name__ == ‘__main__’: Β Β Β Β Β start = datetime.now() Β Β Β Β time.sleep(1) Β Β Β Β end = datetime.now() Β Β Β Β Β print(f»Time taken in (hh:mm:ss.ms) is {end — start}») Β |
Π‘ΠΊΠ°ΡΠ°ΡΡΒ Β ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄
ΠΡΠΎ Π²ΡΠ΅, ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Python.
ΠΡΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ ΠΏΠΎΡΡ
Π‘ΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ΅ΠΉΡΠΈΠ½Π³ 5/5. ΠΠΎΠ΄ΡΡΠ΅Ρ Π³ΠΎΠ»ΠΎΡΠΎΠ²: 21
ΠΠΎΠ»ΠΎΡΠΎΠ² ΠΏΠΎΠΊΠ° Π½Π΅Ρ! ΠΡΠ΄ΡΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΊΡΠΎ ΠΎΡΠ΅Π½ΠΈΡ ΡΡΠΎΡ ΠΏΠΎΡΡ.
Π‘ΠΎΠΆΠ°Π»Π΅Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎΡ ΠΏΠΎΡΡ Π½Π΅ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π΄Π»Ρ Π²Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ!
Π Π°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ»ΡΡΡΠΈΡΡ ΡΡΠΎΡ ΠΏΠΎΡΡ?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½Π°Ρ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΠ΄ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ C, C++, Java, Python, JavaScript, C#, PHP ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊ ΠΌΡ? ΠΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠΉΡΠ΅ Π½Π°Ρ ΡΠ²ΠΎΠΈΠΌ Π΄ΡΡΠ·ΡΡΠΌ ΠΈ ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ Π½Π°ΠΌ ΡΠ°ΡΡΠΈ. Π£Π΄Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ π
Python ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ [5 ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²] β PYnative
ΠΡΠΎΡΠΈΡΠ°Π² ΡΡΡ ΡΡΠ°ΡΡΡ, Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅: β
- ΠΠ°ΠΊ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Python
- ΠΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π±Π»ΠΎΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , ΠΌΠΈΠ½ΡΡΠ°Ρ ΠΈ ββΡΠ°ΡΠ°Ρ
- Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠΈΠΊΠ»ΠΎΠ².
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Python: β
-
time. time()
ΡΡΠ½ΠΊΡΠΈΡ: ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . -
time.process_time()
: ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¦Π ΠΊΠΎΠ΄Π° - ΠΌΠΎΠ΄ΡΠ»Ρ timeit : ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°, Π° ΡΠ°ΠΊΠΆΠ΅ code
- ΠΠΎΠ΄ΡΠ»Ρ DateTime : ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΡΠ°ΡΡ-ΠΌΠΈΠ½ΡΡΡ-ΡΠ΅ΠΊΡΠ½Π΄Ρ.
Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΡΠΊΡΠΈΠΏΡΡ/ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ Π΅Π΅ ΡΠ°ΡΡΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π²Π°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π²Π΅ΡΡΠΈΠΈ Python ΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΠ΅ ΠΏΠΎΠ΄ ΡΠ»ΠΎΠ²ΠΎΠΌ Β«Π²ΡΠ΅ΠΌΡΒ».
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅, ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΉΠΌΠΈΡΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
- ΠΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
- ΠΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Python
- ΠΡΠΈΠΌΠ΅Ρ: ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΌΠΈΠ½ΡΡΠ°Ρ
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¦Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ process_time()
- ΠΠΎΠ΄ΡΠ»Ρ timeit Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°
- ΠΡΠΈΠΌΠ΅Ρ. ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°
- ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°
- ΠΠΎΠ΄ΡΠ»Ρ DateTime Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡ
- ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
ΠΡ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ Π΄Π²ΡΠΌΡ ΡΠ΅ΡΠΌΠΈΠ½Π°ΠΌΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: Π²ΡΠ΅ΠΌΡ Π½Π°ΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΠΎΠ² ΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΡΡΠΈ Π΄Π²Π° ΡΠ΅ΡΠΌΠΈΠ½Π°.
- ΠΡΠ΅ΠΌΡ Π½Π° ΡΡΠ΅Π½Π΅ (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ Π²ΡΠ΅ΠΌΡ ΠΏΠΎ ΡΠ°ΡΠ°ΠΌ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΠΎΠ²) β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΡΠ΅ΠΊΡΠ½Π΄ΠΎΠΌΠ΅ΡΠΎΠΌ. ΠΡΠΎ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ°. Π‘ΡΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² .
- ΠΡΠ΅ΠΌΡ Π¦Π, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π¦Π Π±ΡΠ» Π·Π°Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°), Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π¦Π. ΠΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ².
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ΅Π½Ρ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π¦Π ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° Β«Π²ΡΠ΅ΠΌΡ Π¦Π 0 ΠΌ 0,2 Ρ, Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ 2 ΠΌ 4 ΡΒ». ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ»Π° Π°ΠΊΡΠΈΠ²Π½Π° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 2 ΠΌΠΈΠ½ΡΡ ΠΈ ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΏΠΎΡΡΠ°ΡΠΈΠ» Π²ΡΠ΅Π³ΠΎ 0,2 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΆΠ΄Π°Π»Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΡΡΡΠΎΠ².
Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π», ΠΊΠ°ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ .
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ Π²Ρ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Python
ΠΠΎΠ΄ΡΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
- ΠΠΌΠΏΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
ΠΠΎΠ΄ΡΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Python. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠΌΠΏΠΎΡΡΠ°.
- Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π°
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
time()
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β« start_time Β» ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π€ΡΠ½ΠΊΡΠΈΡtime()
ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ Ρ Π½Π°ΡΠ°Π»Π° ΡΠΏΠΎΡ ΠΈ. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΈΡΠΎΠΊΠΎΡΠ½ΡΡ ΡΠ΅ΠΊΡΠ½Π΄ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. - Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ
ΠΠ°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠΏΡΡΡ ΠΆΠ΅, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡtime()
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β« end_time Β» ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. - Π Π°ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°ΡΠ°Π»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π²ΡΡΡΡ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ: ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ : β
- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡ
- ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ : ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ, Ρ. Π΅. ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π° Π½Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° # ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° ΡΡ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() # ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° # Π½Π°ΠΉΡΠΈ ΡΡΠΌΠΌΡ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π» ΡΡΠΌΠΌΠ°_Ρ = 0 Π΄Π»Ρ Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (1000000): ΡΡΠΌΠΌΠ°_Ρ += Ρ # ΠΆΠ΄Π΅ΠΌ 3 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(3) print('Π‘ΡΠΌΠΌΠ° ΠΏΠ΅ΡΠ²ΡΡ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π» ΡΠ°Π²Π½Π°:', sum_x) # ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ et = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() # ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅_Π²ΡΠ΅ΠΌΡ = et - st print('ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:', elapsed_time, 'ΡΠ΅ΠΊΡΠ½Π΄Ρ')
ΠΡΡ ΠΎΠ΄ :
Π‘ΡΠΌΠΌΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π»: 499999500000 ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: 3,125561475753784 ΡΠ΅ΠΊΡΠ½Π΄Ρ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ : ΠΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π·Π°Π½ΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ Π±Ρ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡ ΠΎΠΆΠΈΠ΄Π°Π» Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΡΡΡΠΎΠ², Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΎΡΡ Π±Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , Π·Π°ΡΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΡΡΠ΅ Π΅Π³ΠΎ Π½Π° 1000, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ .
ΠΡΠΈΠΌΠ΅Ρ :
# ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ΡΠ΅Π· = ΡΡ - ΡΡ final_res = ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ * 1000 ΠΠ΅ΡΠ°ΡΡ (Β«ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:Β», Final_res, 'Milliseconds')
ΠΡΡ ΠΎΠ΄ :
Π‘ΡΠΌΠΌΠ° ΠΏΠ΅ΡΠ²ΡΡ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π½ΠΎΠΌΠ΅ΡΠΎΠ²: 499999500000414143333.5015. ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° 60, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΌΠΈΠ½ΡΡΠ°Ρ .
ΠΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: 3125.988006591797 Milliseconds
ΠΡΠΈΠΌΠ΅Ρ :
# ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΌΠΈΠ½ΡΡΠ°Ρ ΡΠ΅Π· = ΡΡ - ΡΡ final_res = ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ / 60 print('ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:', final_res, 'ΠΌΠΈΠ½ΡΡΡ')
ΠΡΠ²ΠΎΠ΄ :
Π‘ΡΠΌΠΌΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π»: 499999500000 ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: 0. 052008008956 ΠΌΠΈΠ½ΡΡ
ΠΡ Ρ ΠΎΡΠΈΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ strftime() Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΉ ΡΠΎΡΠΌΠ°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ (ΡΡ-ΠΌΠΌ-ΡΡ) ΡΠ°ΡΡ-ΠΌΠΈΠ½ΡΡΡ-ΡΠ΅ΠΊΡΠ½Π΄Ρ.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΡ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() # Π²Π°Ρ ΠΊΠΎΠ΄ ΡΡΠΌΠΌΠ°_Ρ = 0 Π΄Π»Ρ Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (1000000): ΡΡΠΌΠΌΠ°_Ρ += Ρ Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(3) print('Π‘ΡΠΌΠΌΠ°:', sum_x) ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅_Π²ΡΠ΅ΠΌΡ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() - ΡΡ print('ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:', time.strftime("%H:%M:%S", time.gmtime(elapsed_time)))
ΠΡΠ²ΠΎΠ΄ :
Π‘ΡΠΌΠΌΠ°: 499999500000
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: 00:00:03
ΠΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
process_time()
8 time 90.1 2time Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΡΠ΅Π½Π½ΡΡ
ΡΠ°ΡΠΎΠ² 90.1119. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ time.process_time()
Π²ΠΌΠ΅ΡΡΠΎ time.time()
.ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° # ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° ΡΡ = Π²ΡΠ΅ΠΌΡ.ΠΏΡΠΎΡΠ΅ΡΡ_Π²ΡΠ΅ΠΌΡ() # ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° # Π½Π°ΠΉΡΠΈ ΡΡΠΌΠΌΡ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π» ΡΡΠΌΠΌΠ°_Ρ = 0 Π΄Π»Ρ Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (1000000): ΡΡΠΌΠΌΠ°_Ρ += Ρ # ΠΆΠ΄Π΅ΠΌ 3 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(3) print('Π‘ΡΠΌΠΌΠ° ΠΏΠ΅ΡΠ²ΡΡ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π» ΡΠ°Π²Π½Π°:', sum_x) # ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ et = Π²ΡΠ΅ΠΌΡ.ΠΏΡΠΎΡΠ΅ΡΡ_Π²ΡΠ΅ΠΌΡ() # ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π· = ΡΡ - ΡΡ print('ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π¦Π:', res, 'ΡΠ΅ΠΊΡΠ½Π΄Ρ')
ΠΡΠ²ΠΎΠ΄ :
Π‘ΡΠΌΠΌΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π»: 499999500000 ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°: 0,234375 ΡΠ΅ΠΊΡΠ½Π΄
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ :
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ»Π° Π°ΠΊΡΠΈΠ²Π½Π° Π±ΠΎΠ»Π΅Π΅ 3 ΡΠ΅ΠΊΡΠ½Π΄. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΈ 3 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π΅ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π±ΡΠ» ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ, Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΏΠΎΡΡΠ°ΡΠΈΠ» Π²ΡΠ΅Π³ΠΎ 0,23 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΠ΄ΡΠ»Ρ timeit Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°
ΠΠΎΠ΄ΡΠ»Ρ Python timeit ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π° Python. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠ°ΠΊ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ Π»ΠΎΠ²ΡΡΠ΅ΠΊ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΠ΄ΡΠ»Ρ timeit ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ : β
- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠΈΠΊΠ»Ρ
- ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°.
Π€ΡΠ½ΠΊΡΠΈΡ timeit()
: β
Π€ΡΠ½ΠΊΡΠΈΡ timeit.timeit()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ (Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠΈΡΠ»ΠΎ ΡΠ°Π·.
timeit.timeit(stmt='pass', setup='pass', timer=<ΡΠ°ΠΉΠΌΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ>, number=1000000, globals=None)
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ : ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ, Ρ. Π΅. ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π° Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ timeit.
- Π‘Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Timer Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
timeit()
- ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΊΠΎΠ΄ Π²ΠΌΠ΅ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°
stmt
. stmt β ΡΡΠΎ ΠΊΠΎΠ΄, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ. - ΠΠ°Π»Π΅Π΅, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ Π²Π°ΡΠΈΠΌ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΈΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°.
- Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Python.
- ΠΠ°ΡΠ΅ΠΌ ΡΠ΅ΡΠΈΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β 1Β 000Β 000.
- Π ΠΊΠΎΠ½ΡΠ΅ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ
timeit()
Ρ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°
ΠΡΠΈΠΌΠ΅Ρ: ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΠ°ΡΡΡΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ Β«Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅()Β». ΠΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ add()
ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΡΡ ΡΠ°Π·, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° # Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΡΡ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΡΠΈΡΡ(): print('ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅:', ΡΡΠΌΠΌΠ°(Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½(1000000))) # Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ΄ 5 ΡΠ°Π·, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏ = 5 # ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = timeit. timeit(stmt='Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅()', globals=globals(), ΡΠΈΡΠ»ΠΎ=n) # ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ # ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ print(f"ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ {result / n} ΡΠ΅ΠΊΡΠ½Π΄")
ΠΡΠ²ΠΎΠ΄ :
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: 499999500000 ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: 499999500000 ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: 499999500000 ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: 499999500000 ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: 499999500000 ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 0,03770382 ΡΠ΅ΠΊΡΠ½Π΄Ρ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ :
ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½ΠΎΠΌΠ΅Ρ
, ΡΡΠΎ Π·Π°ΠΉΠΌΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΈΡΠ»ΠΎ
ΠΈΠ»ΠΈ ΡΠ΅ΡΠΈΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ±ΠΎΡΠΎΠΊ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
-
ΡΡΠ½ΠΊΡΠΈΠΈ timeit()
ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΡΠ½ΠΎΠΌΡ Π·Π°Ρ Π²Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. - Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
timeit()
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π° ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ Π·Π°Π΄Π°Ρ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ %timeit
Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠ»ΠΈ Π½Π° Π½ΠΎΡΡΠ±ΡΠΊΠ΅ Jupyter, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°.
ΠΡΠΈΠΌΠ΅Ρ : ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ %timeit
Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠΎΠΊΠΎΠΉ ΠΊΠΎΠ΄Π°
%timeit [x Π²ΠΌΠ΅ΡΡΠΎ x Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (1000)] # ΠΡΡ ΠΎΠ΄ 2,08 ΠΌΠΊΡ Β± 223 Π½Ρ Π½Π° ΡΠΈΠΊΠ» (ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ 7 Π·Π°ΠΏΡΡΠΊΠΎΠ², 1000000 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
- ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°
-r
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,%timeit -r10 your_code
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π·Π°ΠΏΡΡΠΊ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° 10 ΡΠ°Π·. - ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΈΠΊΠ»Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
-r
ΠΈ-n
. - ΠΡΠ»ΠΈ Π²Ρ ΠΎΠΏΡΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ 7 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ² Ρ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠΌ ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΠ³ΠΎΠ½Π΅
ΠΡΠΈΠΌΠ΅Ρ: ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ Π½Π° 10 ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ² ΠΈ 20 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΠ³ΠΎΠ½Π΅.
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ² ΠΈ ΡΠΈΠΊΠ»ΠΎΠ² Π² %timeit %timeit -r10 -n20 [x Π΄Π»Ρ x Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (1000)] # Π²ΡΡ ΠΎΠ΄ 1,4 ΠΌΠΊΡ Β± 12,34 Π½Ρ Π½Π° ΠΏΠ΅ΡΠ»Ρ (ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ 10 ΡΠΈΠΊΠ»ΠΎΠ², ΠΏΠΎ 20 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ %%timeit
, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡΡΠ°Π½ΡΡΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ : Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Π½Ρ ( %
) Π½Π° Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π½Ρ ( %%
) Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ timeit, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°
ΠΡΠΈΠΌΠ΅Ρ :
# ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ %%timeit %%timeit -r5 -n10 # Π½Π°ΠΉΡΠΈ ΡΡΠΌΠΌΡ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π» ΡΡΠΌΠΌΠ°_Ρ = 0 Π΄Π»Ρ Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (1000000): ΡΡΠΌΠΌΠ°_Ρ += Ρ # ΠΡΡ ΠΎΠ΄ 10,5 ΠΌΠΊΡ Β± 226 Π½Ρ Π½Π° ΠΏΠ΅ΡΠ»Ρ (ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β± ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ 5 ΡΠΈΠΊΠ»ΠΎΠ², ΠΏΠΎ 10 ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ)
ΠΠΎΠ΄ΡΠ»Ρ DateTime Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Datetime Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ.
ΠΠΌΠΏΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ DateTime
- ΠΠ°ΡΠ΅ΠΌ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
datetime.now()
ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΡ - ΠΠ°ΡΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΡ
- Π ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΡΡΡΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π²ΡΡΠΈΡΠ°Ρ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ : ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ, Ρ. Π΅. ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π° Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΡΠΈΠΌΠ΅Ρ :
ΠΈΠΌΠΏΠΎΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° # ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΡΠ» = datetime.datetime.now () # ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° # Π½Π°ΠΉΡΠΈ ΡΡΠΌΠΌΡ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π» ΡΡΠΌΠΌΠ°_Ρ = 0 Π΄Π»Ρ Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (1000000): ΡΡΠΌΠΌΠ°_Ρ += Ρ # ΠΆΠ΄Π΅ΠΌ 3 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(3) print('Π‘ΡΠΌΠΌΠ° ΠΏΠ΅ΡΠ²ΡΡ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π» ΡΠ°Π²Π½Π°:', sum_x) # ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ et = datetime.datetime.now() # ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅_Π²ΡΠ΅ΠΌΡ = et - st print('ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:', elapsed_time, 'ΡΠ΅ΠΊΡΠ½Π΄Ρ')
ΠΡΡ ΠΎΠ΄ :
Π‘ΡΠΌΠΌΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΈΡΠ΅Π»: 499999500000 ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: 0:00:03. 115498 ΡΠ΅ΠΊΡΠ½Π΄
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΡΠ·Π½Π°Π»ΠΈ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°ΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΠΎΠ² ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Python:
-
time.time()
: ΠΈΠ·ΠΌΠ΅ΡΡΡΠ΅ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . -
timeit.timeit()
: ΠΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π° Python -
%timeit
ΠΈ%%timeit
: ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° . -
datetime.datetime.now()
: ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΡΠ°ΡΡ-ΠΌΠΈΠ½ΡΡΡ-ΡΠ΅ΠΊΡΠ½Π΄Ρ
Π’Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ time.process_time()
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ.
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠ°ΠΊ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² Python?
ΠΠ°Π΄Π°Π²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ
ΡΠΏΡΠΎΡΠΈΠ»
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ 2 Π΄Π½Ρ Π½Π°Π·Π°Π΄
ΠΡΠΎΡΠΌΠΎΡΡΠ΅Π½ΠΎ 2,5 ΠΌΠ»Π½ ΡΠ°Π·
Π― Ρ
ΠΎΡΡ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π― Π½Π΅ ΠΌΠΎΠ³ Π·Π°ΡΡΠ°Π²ΠΈΡΡ timeit
ΡΠ°Π±ΠΎΡΠ°ΡΡ:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π°ΡΠ°Π»ΠΎ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ("ΠΏΡΠΈΠ²Π΅Ρ") ΠΊΠΎΠ½Π΅Ρ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() ΠΏΠ΅ΡΠ°ΡΡ (ΠΊΠΎΠ½Π΅Ρ - Π½Π°ΡΠ°Π»ΠΎ)
- ΠΏΠΈΡΠΎΠ½
- ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
- ΠΌΠ΅ΡΠ°
- Π²ΡΠ΅ΠΌΡΠΈΡ
3
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ time.time()
Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π°ΡΡΠ΅Π½Π½ΡΡ
ΡΠ°ΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΎΡΠΊΠ°ΠΌΠΈ:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π°ΡΠ°Π»ΠΎ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ("ΠΏΡΠΈΠ²Π΅Ρ") ΠΊΠΎΠ½Π΅Ρ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() ΠΏΠ΅ΡΠ°ΡΡ (ΠΊΠΎΠ½Π΅Ρ - Π½Π°ΡΠ°Π»ΠΎ)
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ .
ΠΡΡΠ³ΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Python 3.3, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ perf_counter
ΠΈΠ»ΠΈ process_time
, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΠΎ Π²Π΅ΡΡΠΈΠΈ 3.3 ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ time.clock
(ΡΠΏΠ°ΡΠΈΠ±ΠΎ Amber). ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ ΡΡΡΠ°ΡΠ΅Π»:
Π Unix Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . Π’ΠΎΡΠ½ΠΎΡΡΡ, Π° Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°ΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΒ», Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ C ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠΌΠ΅Π½ΠΈ.
Π Windows ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Π½Π°ΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΠΎΠ², ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π€ΡΠ½ΠΊΡΠΈΡ Win32
QueryPerformanceCounter()
. Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π»ΡΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Ρ.Π£ΡΡΠ°ΡΠ΅Π»ΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.3 : ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
perf_counter()
ΠΈΠ»ΠΈprocess_time()
Π²ΠΌΠ΅ΡΡΠΎ , Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ timeit.default_timer
Π²ΠΌΠ΅ΡΡΠΎ timeit.timeit
. ΠΠ΅ΡΠ²ΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π»ΡΡΡΠΈΠ΅ ΡΠ°ΡΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π½Π° Π²Π°ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ ΠΈ Π²Π΅ΡΡΠΈΠΈ Python:
from timeit import default_timer as timer ΡΡΠ°ΡΡ = ΡΠ°ΠΉΠΌΠ΅Ρ() # ... ΠΊΠΎΠ½Π΅Ρ = ΡΠ°ΠΉΠΌΠ΅Ρ() print(end - start) # ΠΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 5. 38091952400282
timeit.default_timer Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ Π΄Π»Ρ time.time() ΠΈΠ»ΠΈ time.clock() Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΠ‘. Π Python 3.3+ default_timer β ΡΡΠΎ time.perf_counter() Π½Π° Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ . Π‘ΠΌ. Python β time.clock () ΠΏΡΠΎΡΠΈΠ² time.time () β ΡΠΎΡΠ½ΠΎΡΡΡ?
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
- ΠΠΎΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
- ΠΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ
1
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ time.clock()
ΡΡΡΠ°ΡΠ΅Π», Π½Π°ΡΠΈΠ½Π°Ρ Ρ Python 3.3, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ time.perf_counter()
Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ time.process_time()
Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠΉ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ time.clock()
:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° Ρ = Π²ΡΠ΅ΠΌΡ.ΠΏΡΠΎΡΠ΅ΡΡ_Π²ΡΠ΅ΠΌΡ() #ΡΠ΄Π΅Π»Π°ΠΉ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅_Π²ΡΠ΅ΠΌΡ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ_ΠΏΡΠΎΡΠ΅ΡΡΠ°() - t
ΠΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ process_time
Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ½Π°.
1
ΠΡΠ΅ΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ :
ΠΈΠ· timeit ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ default_timer ΠΊΠ°ΠΊ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΈΠ· datetime ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ timedelta ΡΡΠ°ΡΡ = ΡΠ°ΠΉΠΌΠ΅Ρ() # . ... # (Π·Π΄Π΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄) # ... ΠΊΠΎΠ½Π΅Ρ = ΡΠ°ΠΉΠΌΠ΅Ρ() ΠΏΠ΅ΡΠ°ΡΡ (timedelta (ΡΠ΅ΠΊΡΠ½Π΄Ρ = ΠΊΠΎΠ½Π΅Ρ-Π½Π°ΡΠ°Π»ΠΎ))
ΠΡΡ ΠΎΠ΄ :
0:00:01.946339
0
Π£ΡΠΈΡΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ,
test.py:
def foo(): # Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ "ΠΏΡΠΈΠ²Π΅Ρ" Π²Π΅ΡΠ½ΠΈ "ΠΏΡΠΈΠ²Π΅Ρ"
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ timeit
β Π²ΡΠ·Π²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
% python -mtimeit -s'import test' 'test.foo()' 1000000 ΡΠΈΠΊΠ»ΠΎΠ², Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 0,254 ΠΌΠΊΡ Π½Π° ΡΠΈΠΊΠ»
ΠΠ΅ ΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ time.time
ΠΈΠ»ΠΈ time.clock
(Π½Π°ΠΈΠ²Π½ΠΎ) Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π΄Π°ΡΡ Π²Π²ΠΎΠ΄ΡΡΠΈΠ΅ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
PS. ΠΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠ΅ΡΠ°ΡΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°.
0
ΠΠ°Π±Π°Π²Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° ΠΏΡΠΈ Π²Ρ
ΠΎΠ΄Π΅ Π² Π±Π»ΠΎΠΊ Ρ
, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΡ
ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ°. Π‘ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Ρ
ΠΈΡΡΠΎΡΡΡΠΌΠΈ Π²Ρ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ° ΠΈΠ· ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΡΠΎΠ³ΠΎ Π½Π΅Ρ (Π½ΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ). ΠΠΊΠ°Π·Π°Π²ΡΠΈΡΡ Π½Π° ΠΌΠ΅ΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ:
Ρ elapsed_timer() ΠΊΠ°ΠΊ ΠΈΡΡΠ΅ΠΊΡΠ΅Π΅: # ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ print("midpoint at %.2f ΡΠ΅ΠΊΡΠ½Π΄Ρ" % elapsed() ) # Π²ΡΠ΅ΠΌΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ # Π΄ΡΡΠ³ΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ print("Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π·Π° %.2f ΡΠ΅ΠΊΡΠ½Π΄" % ΠΈΡΡΠ΅ΠΊΠ»ΠΎ() )
ΠΠΎΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄ contextmanager:
from contextlib import contextmanager ΠΈΠ· timeit ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ default_timer @contextmanager ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠΉ_ΡΠ°ΠΉΠΌΠ΅Ρ Π·Π°ΡΠΈΡΡ (): Π·Π°ΠΏΡΡΠΊ = ΡΠ°ΠΉΠΌΠ΅Ρ_ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ() elapser = lambda: default_timer() β Π·Π°ΠΏΡΡΠΊ Π²ΡΡ ΠΎΠ΄ Π»ΡΠΌΠ±Π΄Π°: eplapser() ΠΊΠΎΠ½Π΅Ρ = ΡΠ°ΠΉΠΌΠ΅Ρ_ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ() elapser = Π»ΡΠΌΠ±Π΄Π°: ΠΊΠΎΠ½Π΅Ρ-Π½Π°ΡΠ°Π»ΠΎ
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° Ρ elapsed_timer() ΠΊΠ°ΠΊ ΠΈΡΡΠ΅ΠΊΡΠΈΠΌ: Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(1) ΠΏΠ΅ΡΠ°ΡΡ (ΠΈΡΡΠ΅ΠΊΡΠ΅Π΅()) Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(2) ΠΏΠ΅ΡΠ°ΡΡ (ΠΈΡΡΠ΅ΠΊΡΠ΅Π΅()) Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(3)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎ Π·Π°ΠΌΡΡΠ»Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ elapsed()
Π·Π°ΠΌΠΎΡΠ°ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π²ΡΡ
ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ°, ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ (ΠΎΠΊΠΎΠ»ΠΎ 6 ΡΠ΅ΠΊΡΠ½Π΄ Π² ΡΡΠΎΠΌ ΠΈΠ³ΡΡΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅).
2
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΡΡΠΎ. Π²ΡΠ΅ΠΌΡ
doc ΡΠ»ΠΈΡΠΊΠΎΠΌ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΉ.
ΠΈΠ· Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ start_time = Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ.ΡΠ΅ΠΉΡΠ°Ρ() # ΠΠ‘Π’ΠΠΠ¬Π’Π Π‘ΠΠΠ ΠΠΠ time_elapsed = datetime.now() - start_time print('ΠΡΠ΅ΠΌΡ ΠΈΡΡΠ΅ΠΊΠ»ΠΎ (ΡΡ:ΠΌΠΌ:ΡΡ.ΠΌΡ) {}'.format(time_elapsed))
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π΄Π΅ΡΡ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π» ΡΡ:ΠΌΠΌ:ΡΡ
Π² ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠΊΠ΅, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ time_elapsed
3
ΠΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ:
>> ΠΈΠ· pytictoc ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ TicToc >> t = TicToc() # ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ TicToc >> t.tic() # ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ >> # ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ >> t.toc() # ΠΡΠ²Π΅ΡΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 2,612231 ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
>> ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ >> t1 = Π²ΡΠ΅ΠΌΡ() >> # ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ >> t2 = Π²ΡΠ΅ΠΌΡ() >> ΠΏΡΠΎΡΠ»ΠΎ = t2 - t1 >> print('ΠΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ: %f ΡΠ΅ΠΊΡΠ½Π΄. ' ΠΡΠΎΡΠ»ΠΎ %) ΠΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 2,612231 ΡΠ΅ΠΊΡΠ½Π΄Ρ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:
pip install pytictoc
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ PyPi.
5
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° start_time = Π²ΡΠ΅ΠΌΡ.monotonic() <ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ> print('ΡΠ΅ΠΊΡΠ½Π΄Ρ:', time.monotonic() - start_time)
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π΄Π΅ΡΡ.
2
ΠΠΎΡ ΠΌΠΎΠΈ Π²ΡΠ²ΠΎΠ΄Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ Ρ ΠΎΡΠΎΡΠΈΡ ΠΎΡΠ²Π΅ΡΠΎΠ² Π·Π΄Π΅ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π΅ΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ»Π΅Π±Π»Π΅ΡΠ΅ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ timeit
ΠΈ time.time
, timeit
ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
-
timeit
Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π»ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΠ‘ ΠΈ Π²Π΅ΡΡΠΈΠΈ Python. -
timeit
ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΡΠΎ, ΡΠ΅Π³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ ΠΎΡΠ΅ΡΡ ΠΈΠ»ΠΈ Π½Π΅ Ρ ΠΎΡΠ΅ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ timeit
Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ, Π° ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΡΡΠ° ΠΈΠΌΠΏΠΎΡΡΠ°, Π²ΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΆΠ°ΡΠ½ΠΎ. Π ΠΈΠ΄Π΅Π°Π»Π΅ Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ΅Π½ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Ρ Π±Π»ΠΎΠΊΠΎΠΌ
ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°:
ΠΠ°ΡΠΈΠ°Π½Ρ 1: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ timebudget
Timebudget β ΡΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅Π³ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ pip. ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ.
@timebudget # ΠΠ°ΠΏΠΈΡΠΈΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠΎΠΉ_ΠΌΠ΅ΡΠΎΠ΄(): # ΠΌΠΎΠΉ ΠΊΠΎΠ΄
ΠΠ°ΡΠΈΠ°Π½Ρ 2: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠΎΠΉ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΠΈΠΆΠ΅ Ρ ΡΠΎΠ·Π΄Π°Π» Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Timing.py. ΠΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Π²Π½Π΅ΡΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ β ΡΡΠΎ runstats, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΡΡ ΠΆΠ΅ Π½Π΅Π²Π΅Π»ΠΈΠΊΠ°.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠ² ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° @timing.MeasureTime ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ MyBigFunc(): #ΡΠ΄Π΅Π»Π°ΠΉ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, ΠΎΡΠ½ΠΈΠΌΠ°ΡΡΠ΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (10000): ΠΏΠ΅ΡΠ°ΡΡ (Ρ) Π²ΡΠ΅ΠΌΡ.print_all_timings()
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅Π΅ Π² Ρ Π±Π»ΠΎΠΊΠΎΠΌ
:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° #Π³Π΄Π΅-ΡΠΎ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.MeasureBlockTime("MyBlock"): #ΡΠ΄Π΅Π»Π°ΠΉ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, ΠΎΡΠ½ΠΈΠΌΠ°ΡΡΠ΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (10000): ΠΏΠ΅ΡΠ°ΡΡ (Ρ) # ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π²ΡΠ΅ΠΌΡ.print_all_timings()
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄ΠΎΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Ρ ΠΎΡΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ²:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΈΠ· timeit Π²ΠΌΠ΅ΡΡΠΎ time.time ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΡΠ°Π½Π΅Π΅.
- ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
- Decorator ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΈΠ»ΠΈ Π±Π΅Π·ΡΠΌΡΠ½Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ°ΡΡ Π² Π±Π»ΠΎΠΊΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Ρ time.MeasureBlockTime() ΠΊΠ°ΠΊ t
, Π° Π·Π°ΡΠ΅ΠΌt.elapsed
). - ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΡΠ°Π²ΠΈΡΡ gc Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π±Π»ΠΎΠΊΠΎΠ².
2
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ time.time
Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π΅Ρ Π²Π°ΠΌ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π°ΡΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. ΠΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π°/Π°Π»Π³ΠΎΡΠΈΡΠΌΡ/ΡΡΠ½ΠΊΡΠΈΠΈ/…
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ timeit
:
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ timeit
- timeit β ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π° Python
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π³Π»ΡΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
- http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Profiling_Code
- ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΠΈΠΏΡ Python?
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ : Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» http://pythonhosted. org/line_profiler/ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π³ΠΎΠ΄Π° ΠΈ ΡΡΠΈΡΠ°Ρ Π΅Π³ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΎΡΠΈΠ»Ρ Python.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°. ΠΡΠΎ Π΄Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ.
ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° profile.run('ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ()')
Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅:
5 Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π·Π° 0,047 ΡΠ΅ΠΊΡΠ½Π΄Ρ Π£ΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΎ: ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ncalls tottime percall cumtime percall ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°:lineno(ΡΡΠ½ΠΊΡΠΈΡ) 1 0,000 0,000 0,000 0,000 :0(ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅) 1 0,047 0,047 0,047 0,047 :0(ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΏΡΠΎΡΠΈΠ»Ρ) 1 0,000 0,000 0,000 0,000 <ΡΡΡΠΎΠΊΠ°>:1(<ΠΌΠΎΠ΄ΡΠ»Ρ>) 0 0,000 0,000 ΠΏΡΠΎΡΠΈΠ»Ρ:0(ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ) 1 0,000 0,000 0,047 0,047 ΠΏΡΠΎΡΠΈΠ»Ρ:0(ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ()) 1 0,000 0,000 0,000 0,000 two_sum.py:2(twoSum)
Π― Π½Π°ΡΠ΅Π» ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠΌ.
1
ΠΠΎΠ΄ΡΠ»ΠΈ Python cProfile ΠΈ pstats ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π³ΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ , Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄ Π²ΠΎΠΊΡΡΠ³ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡ python timeFunctions.py:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΏΡΠΈΠ²Π΅Ρ (): Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ "ΠΡΠΈΠ²Π΅Ρ :)" Π²ΡΠ΅ΠΌΡ ΡΠ½Π° (0,1) ΡΠΏΠ°ΡΠΈΠ±ΠΎ (): ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ "Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!" Π²ΡΠ΅ΠΌΡ ΡΠ½Π° (0,05) Π΄Π»Ρ idx Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (10): ΠΏΡΠΈΠ²Π΅Ρ() Π΄Π»Ρ idx Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (100): Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ()
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ:
python -m cProfile -o timeStats.profile timeFunctions.py
ΠΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ cProfile Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π² timeFunctions.py ΠΈ ΡΠ±ΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅ timeStats.profile. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ (timeFunctions.py), ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ Π»ΡΠ±ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ.
ΠΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΉΠ» ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ pstats ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
python -m pstats timeStats.profile
ΠΠ°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² Π±ΡΠ°ΡΠ·Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ. timeStats.profile% ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΏΡΠΈΠ²Π΅Ρ <ΠΎΡΠΌΠ΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ> timeStats.profile 224 Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ Π·Π° 6,014 ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ Ρ 6 Π΄ΠΎ 1 ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ <'hello'> ncalls tottime percall cumtime percall ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°:lineno(ΡΡΠ½ΠΊΡΠΈΡ) 10 0,000 0,000 1,001 0,100 timeFunctions.py:3(ΠΏΡΠΈΠ²Π΅Ρ) timeStats.profile% ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠΏΠ°ΡΠΈΠ±ΠΎ <ΠΎΡΠΌΠ΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ> timeStats.profile 224 Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ Π·Π° 6,014 ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ Ρ 6 Π΄ΠΎ 1 ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ <'thankyou'> ncalls tottime percall cumtime percall ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°:lineno(ΡΡΠ½ΠΊΡΠΈΡ) 100 0,002 0,000 5,012 0,050 timeFunctions.py:7(ΡΠΏΠ°ΡΠΈΠ±ΠΎ)
ΠΡΠΎΡ ΡΠΈΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ°Π»ΠΎ ΡΡΠΎ Π΄Π°Π΅Ρ, Π½ΠΎ Π΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. Π‘Π°ΠΌΠΎΠ΅ ΠΏΡΠΈΡΡΠ½ΠΎΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΡΠΎ, ΡΡΠΎ ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΌΠΎΠ΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΈ ΡΠΈΡΠ»Π° ΠΈ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
3
ΠΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΠΊΠΎΠ΄Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ —
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
ΠΈΠ· ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ° ΠΈΠΌΠΏΠΎΡΡΠ° Ρ ΡΡΠ°Π»ΠΎΠ½ΠΎΠΌ ("Π’Π΅ΡΡ 1+1"): 1+1 => Π’Π΅ΡΡ 1+1: 1.41e-06 ΡΠ΅ΠΊΡΠ½Π΄
ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
Ρ ΡΡΠ°Π»ΠΎΠ½ΠΎΠΌ (Β«Π’Π΅ΡΡ 1+1Β») ΠΊΠ°ΠΊ b: 1+1 ΠΏΠ΅ΡΠ°ΡΡ (Π±.Π²ΡΠ΅ΠΌΡ) => Π’Π΅ΡΡ 1+1: 7.05e-07 ΡΠ΅ΠΊΡΠ½Π΄ 7.05233786763Ρ-07
Benchmark.py :
ΠΈΠ· timeit ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ default_timer ΠΊΠ°ΠΊ ΡΠ°ΠΉΠΌΠ΅Ρ ΡΡΠ°Π»ΠΎΠ½ ΠΊΠ»Π°ΡΡΠ° (ΠΎΠ±ΡΠ΅ΠΊΡ): def __init__(self, msg, fmt="%0.3g"): self.msg = ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»Ρ.ΡΠΌΡ = ΡΠΌΡ Π·Π°ΡΠΈΡΠ° __enter__(ΡΠ°ΠΌ): self.start = ΡΠ°ΠΉΠΌΠ΅Ρ () Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π±Ρ def __exit__(Ρ, *Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ): t = ΡΠ°ΠΉΠΌΠ΅Ρ () - self.start print(("%s : " + self.fmt + " ΡΠ΅ΠΊΡΠ½Π΄Ρ") % (self.msg, t)) ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ = Ρ
ΠΠ·ΡΡΠΎ Ρ http://dabeaz.blogspot.fr/2010/02/context-manager-for-timing-benchmarks.html
ΠΠΎΡ ΠΊΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Β«ΡΡ:ΠΌΠΌ:ΡΡΒ»:
ΠΊΠ»Π°ΡΡ Π’Π°ΠΉΠΌΠ΅Ρ: Π·Π°ΡΠΈΡΠ° __init__(ΡΠ°ΠΌ): self. start = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° Π·Π°ΡΠΈΡΡ (ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ): self.start = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() Π·Π°ΡΠΈΡΠ° get_time_hhmmss (Ρ): ΠΊΠΎΠ½Π΅Ρ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() m, s = divmod(end - self.start, 60) Ρ, ΠΌ = divmod(m, 60) time_str = "%02d:%02d:%02d" % (Ρ, ΠΌ, Ρ) Π²ΠΎΠ·Π²ΡΠ°Ρ time_str
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
# ΠΠ°ΠΏΡΡΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΌΠΎΠΉ_ΡΠ°ΠΉΠΌΠ΅Ρ = Π’Π°ΠΉΠΌΠ΅Ρ() # ... ΡΠ΄Π΅Π»Π°ΠΉ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ # ΠΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠΎΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ: time_hhmmss = my_timer.get_time_hhmmss() print("ΠΡΠΎΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ: %s" % time_hhmmss ) # ... ΡΠ½ΠΎΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΌΠΎΠΉ_ΡΠ°ΠΉΠΌΠ΅Ρ.restart() # ... ΡΠ΄Π΅Π»Π°ΠΉ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ # ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ: time_hhmmss = my_timer.get_time_hhmmss() # ... ΠΈ Ρ. Π΄
1
(ΡΠΎΠ»ΡΠΊΠΎ Ρ Ipython) Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ %timeit Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ:
def foo(): Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ "ΠΏΡΠΈΠ²Π΅Ρ"
, Π° Π·Π°ΡΠ΅ΠΌ:
%timeit foo()
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ:
10000 ΡΠΈΠΊΠ»ΠΎΠ², Π»ΡΡΡΠ΅Π΅ ΠΈΠ· 3: 27 ΠΌΠΊΡ Π½Π° ΡΠΈΠΊΠ»
1
ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ (python 3):
ΠΈΠ· timeit ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ timeit timeit(Π»ΡΠΌΠ±Π΄Π°: ΠΏΠ΅ΡΠ°ΡΡ("ΠΏΡΠΈΠ²Π΅Ρ"))
ΠΡΠ²ΠΎΠ΄ ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:
2. 430883963010274
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ : timeit Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ ΡΠ°Π· ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ΄Π°Π΅ΡΡΡ Π·Π° ΡΠ΅ΠΊΡΠ½Π΄ . Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π»Ρ 90Β 117 1 ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ 90Β 118 ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, Π½ΠΎ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ 90Β 118 ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ Π·Π° 90Β 117 ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄.
ΠΠ»Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, ΠΈΠ½Π°ΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΆΠ΄Π°ΡΡ Π²Π΅ΡΠ½ΠΎ:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° timeit(Π»ΡΠΌΠ±Π΄Π°: time.sleep(1.5), ΡΠΈΡΠ»ΠΎ=1)
ΠΡΠ²ΠΎΠ΄ Π²ΡΠ΅Π³Π΄Π° Π·Π° ΡΠ΅ΠΊΡΠ½Π΄ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ:
1.5015795179999714
2
Π½Π° python3:
ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠ½Π°, perf_counter ΠΊΠ°ΠΊ ΠΠ t0 = ΠΏΠΊ() ΡΠΏΠ°ΡΡ(1) ΠΏΠ΅ΡΠ°ΡΡ (ΠΏΠΊ () - t0)
ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΉ ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ.
2
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ timeit:
ΠΈΠ· timeit ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ timeit Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ(): Π²Π΅ΡΠ½ΡΡΡ 1 + 1 Π²ΡΠ΅ΠΌΡ = Π²ΡΠ΅ΠΌΡ (ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΈΡΠ»ΠΎ = 1) ΠΏΠ΅ΡΠ°ΡΡ (Π²ΡΠ΅ΠΌΡ)
%load_ext Π·ΠΌΠ΅ΠΈΠ½Π°Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ %%snakeviz
ΠΠ½ ΠΏΡΠΎΡΡΠΎ Π±Π΅ΡΠ΅Ρ ΡΡΠΈ 2 ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ Jupyter ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠΎΡ ΠΊΠΎΠ΄. ΠΠΏΡΡΡ ΠΆΠ΅, 2 ΡΡΡΠΎΠΊΠΈ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ %
, ΡΠ²Π»ΡΡΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π·ΠΌΠ΅ΠΈΠ½ΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
# !pip install snapviz %load_ext Π·ΠΌΠ΅ΠΈΠ½Π°Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π³Π»ΠΎΠ±ΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π΅Ρ-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ %%snakeviz ΡΠ°ΠΉΠ»Ρ = glob.glob('*.txt') def print_files_hashed (ΡΠ°ΠΉΠ»Ρ): Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° Π² ΡΠ°ΠΉΠ»Π°Ρ : Ρ ΠΎΡΠΊΡΡΡΡΠΌ (ΡΠ°ΠΉΠ») ΠΊΠ°ΠΊ f: print(hashlib.md5(f.read().encode('utf-8')).hexdigest()) print_files_hashed(ΡΠ°ΠΉΠ»Ρ) 9123 t2 = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() ΠΏΠ΅ΡΠ°ΡΡ (t2-t1)
7.9870223994e-05
1
ΠΠΎΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΈΠ»ΠΈΡΡ:
ΠΈΠ· functools import wraps ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° perf_counter ΠΎΡ Π²Π²ΠΎΠ΄Π° import Any, Callable, Optional, TypeVar, cast F = TypeVar("F",bound=Callable[..., Any]) def timer (ΠΏΡΠ΅ΡΠΈΠΊΡ: ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ [str] = ΠΠ΅Ρ, ΡΠΎΡΠ½ΠΎΡΡΡ: int = 6) -> ΠΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ [[F], F]: """ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ: ΠΏΡΠ΅ΡΠΈΠΊΡ: ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ Π΄ΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ. ΡΠΎΡΠ½ΠΎΡΡΡ: ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ Π·Π½Π°ΠΊΠΎΠ² Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΠ½Π΄. ΠΡΠΈΠΌΠ΅ΡΡ: >>> @ΡΠ°ΠΉΠΌΠ΅Ρ() ... ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ foo(x): ... Π²Π΅ΡΠ½ΡΡΡ Ρ >>> ΡΠΎΠΎ(123) ΡΡ: 0,000... Ρ 123 >>> @timer("ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: ", 2) ... ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ foo(x): ... Π²Π΅ΡΠ½ΡΡΡ Ρ >>> ΡΠΎΠΎ(123) ΠΠ°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ: 0,00 Ρ 123 """ def decorator(func: F) -> F: @ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΡ (ΡΡΠ½ΠΊΡΠΈΡ) def wrapper(*args: Any, **kwargs: Any) -> Any: Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ prefix = ΠΏΡΠ΅ΡΠΈΠΊΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ Π½Π΅ None else f"{func.__name__}: " ΡΡΠ°ΡΡ = perf_counter() ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = ΡΡΠ½ΠΊΡΠΈΡ (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs) ΠΊΠΎΠ½Π΅Ρ = perf_counter() print(f"{prefix}{ΠΊΠΎΠ½Π΅Ρ - Π½Π°ΡΠ°Π»ΠΎ:.{ΡΠΎΡΠ½ΠΎΡΡΡ}f}s") Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ½ΠΎΠ΅ Π»ΠΈΡΡΠ΅ (F, ΠΎΠ±Π΅ΡΡΠΊΠ°) Π²Π΅ΡΠ½ΡΡΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
ΠΈΠ· ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° @ΡΠ°ΠΉΠΌΠ΅Ρ (ΡΠΎΡΠ½ΠΎΡΡΡ = 9) def take_long(x: int) -> bool: Π²Π΅ΡΠ½ΡΡΡ x Π² (i Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (x + 1)) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ_Π΄ΠΎΠ»Π³ΠΎ(10**8) ΠΏΠ΅ΡΠ°ΡΡ (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ)
ΠΡΡ ΠΎΠ΄:
Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ_Π΄ΠΎΠ»Π³ΠΎ: 4,942629056 Ρ ΠΡΡΠΈΠ½Π½ΡΠΉ
doctests ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
$ python3 -m doctest --verbose -o=ELLIPSIS timer. py
Π ΡΠΈΠΏ Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ Π½Π°:
$ mypy timer.py
3
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ time_decorator (ΡΡΠ½ΠΊΡΠΈΡ): ΠΎΠ±Π΅ΡΡΠΊΠ° def (*args, **kwargs): Π½Π°ΡΠ°Π»ΠΎ = Π²ΡΠ΅ΠΌΡ.perf_counter() original_return_val = func(*args, **kwargs) ΠΊΠΎΠ½Π΅Ρ = Π²ΡΠ΅ΠΌΡ.perf_counter() print("ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²", func.__name__, ": ", end-start, sep='') Π²Π΅ΡΠ½ΡΡΡ original_return_val Π²ΠΎΠ·Π²ΡΠ°ΡΠ½Π°Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
@timing_decorator ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ function_to_time(): Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(1) function_to_time()
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ function_to_time
, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠΎ Π·Π°Π½ΡΠ»ΠΎ, ΠΈ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΠΌΠ΅ΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
3
ΠΡΠ΅Π½Ρ ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ ΠΎΡΠ²Π΅Ρ, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠΌΡ-ΡΠΎ ΠΎΠ½ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ. ΠΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΡΠΈΡΠ°Ρ ΠΎΡΠ΅Π½Ρ ΡΠΈΡΡΡΠΌ.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° def timed(fun, *args): Ρ = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() Π³ = Π²Π΅ΡΠ΅Π»ΠΎ (*Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ) print('{} Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π½ΡΠ»ΠΎ {} ΡΠ΅ΠΊΡΠ½Π΄.'.format(fun.__name__, time.time()-s)) Π²ΠΎΠ·Π²ΡΠ°Ρ (Π³) timed(ΠΏΠ΅ΡΠ°ΡΡ, "ΠΡΠΈΠ²Π΅Ρ")
ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Β«ΠΏΠ΅ΡΠ°ΡΡΒ» β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π² Python 3, Π° Π½Π΅ Π² Python 2.7. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠ°ΡΠ΅ Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅!
2
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ timeit.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ naive_func, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Python REPL:
>>> import timeit >>> ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ²Π½ΠΎΠΉ_ΡΡΠ½ΠΊΡΠΈΠΈ (Ρ ): ... Π° = 0 ... Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (a): ... Π° += Ρ ... Π²Π΅ΡΠ½ΡΡΡ >>> def wrapper(func, *args, **kwargs): ... Π΄Π΅Ρ ΠΎΠ±Π΅ΡΡΠΊΠ°(): ... return func(*args, **kwargs) ... Π²ΠΎΠ·Π²ΡΠ°ΡΠ½Π°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ° >>> ΠΎΠ±Π΅ΡΠ½ΡΡΡΠΉ = ΠΎΠ±Π΅ΡΡΠΊΠ° (naive_func, 1_000) >>> timeit.timeit(ΠΎΠ±Π΅ΡΠ½ΡΡΡΠΉ, ΡΠΈΡΠ»ΠΎ=1_000_000) 0,4458435332577161
ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°, Π΅ΡΠ»ΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
1
Π€ΡΠ½ΠΊΡΠΈΡ print_elapsed_time Π½ΠΈΠΆΠ΅
def print_elapsed_time (ΠΏΡΠ΅ΡΠΈΠΊΡ = ''): e_time = Π²ΡΠ΅ΠΌΡ.Π²ΡΠ΅ΠΌΡ() Π΅ΡΠ»ΠΈ Π½Π΅ hasattr(print_elapsed_time, 's_time'): print_elapsed_time.s_time = e_time Π΅ΡΠ΅: print(f'{prefix} ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ: {e_time - print_elapsed_time.s_time:.2f} sec') print_elapsed_time.s_time = e_time
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
print_elapsed_time() ....ΡΡΠΆΠ΅Π»ΡΠ΅ ΡΠ°Π±ΠΎΡΡ... print_elapsed_time('ΠΏΠΎΡΠ»Π΅ ΡΡΠΆΠ΅Π»ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ') ....ΡΠΎΠ½Π½Ρ ΡΠ°Π±ΠΎΡΠΈΡ ΠΌΠ΅ΡΡ... print_elapsed_time('ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ½Π½Ρ Π·Π°Π΄Π°Π½ΠΈΠΉ')
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΆΠ΅Π»ΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ Π²ΡΠ΅ΠΌΡ: 0,39 ΡΠ΅ΠΊ. ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ½Π½Ρ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΏΡΠΎΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ: 0,60 ΡΠ΅ΠΊ.
ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π°
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π² ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ°, Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»ΠΎ = Π²ΡΠ΅ΠΌΡ.ΡΠ°ΡΡ() ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ num_multi1 (ΠΌΠ°ΠΊΡ. ): ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = 0 Π΄Π»Ρ ΡΠΈΡΠ»Π° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (0, 1000): Π΅ΡΠ»ΠΈ (ΡΠΈΡΠ»ΠΎ % 3 == 0 ΠΈΠ»ΠΈ ΡΠΈΡΠ»ΠΎ % 5 == 0): ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ += ΡΠΈΡΠ»ΠΎ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ "Π‘ΡΠΌΠΌΠ° %d" % ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ num_multi1 (1000) ΠΊΠΎΠ½Π΅Ρ = Π²ΡΠ΅ΠΌΡ.ΡΠ°ΡΡ() Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = ΠΊΠΎΠ½Π΅Ρ - Π½Π°ΡΠ°Π»ΠΎ ΠΎΡΠΌΠ΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ = datetime.datetime.fromtimestamp (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅) ΠΏΠ΅ΡΠ°ΡΡ timestamp.strftime('%Y-%m-%d %H:%M:%S')
Π₯ΠΎΡΡ Π² Π²ΠΎΠΏΡΠΎΡΠ΅ ΡΡΠΎ ΡΡΡΠΎΠ³ΠΎ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Python 3.8 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ walrus), ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π°ΡΠ°Π»ΠΎ, ΡΠ°Π· = time.perf_counter(), {} ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ("ΠΏΡΠΈΠ²Π΅Ρ") times["print"] = -start + (start := time.perf_counter()) Π²ΡΠ΅ΠΌΡ ΡΠ½Π°(1.42) times["sleep"] = -start + (start := time.perf_counter()) a = [n**2 Π΄Π»Ρ n Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (10000)] ΡΠ°Π·["pow"] = -start + (start := time. perf_counter()) ΠΏΠ΅ΡΠ°ΡΡ (ΡΠ°Π·)
=>
{'ΠΏΠ΅ΡΠ°ΡΡ': 2.193450927734375e-05, 'ΡΠΎΠ½': 1.4210970401763916, 'ΠΌΠΎΡΠ½ΠΎΡΡΡ': 0.005671024322509766}
Π― ΡΠ΄Π΅Π»Π°Π» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΊ
ΠΈΠ· ΠΈΠΌΠΏΠΎΡΡΠ° pythonbenchmark ΡΡΠ°Π²Π½ΠΈΡΡ, ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π°, Π±, Π², Π³, Π΄ = 10,10,10,10,10 ΡΡΠΎ-ΡΠΎ = [Π°, Π±, Π², Π³, Π΄] @ΠΌΠ΅ΡΠ° def myFunction (ΡΡΠΎ-ΡΠΎ): Π²ΡΠ΅ΠΌΡ ΡΠ½Π° (0,4) @ΠΌΠ΅ΡΠ° def myOptimizedFunction (ΡΡΠΎ-ΡΠΎ): Π²ΡΠ΅ΠΌΡ ΡΠ½Π° (0,2) ΠΌΠΎΡ ΡΡΠ½ΠΊΡΠΈΡ (Π²Π²ΠΎΠ΄) ΠΌΠΎΡΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°ΡΠ€ΡΠ½ΠΊΡΠΈΡ(Π²Π²ΠΎΠ΄)
https://github.com/Karlheinzniebuhr/pythonbenchmark
ΠΡΠΎΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠ΅ΡΠ°ΡΠ½ΠΎΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ. ΠΠ½ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python 3.7.
ΠΈΠΌΠΏΠΎΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡ Π’Π°ΠΉΠΌΠ΅Ρ: """ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.""" # Π‘ΡΡΠ»ΠΊΠ°: https://stackoverflow.