728x90
반응형
from timeit import Timer
s1 = ['a', 'b', 'c'] * 50000
s2 = ['a', 'b', 'c'] * 50000
t1 = Timer('del s1[10000:10003]', 'from __main__ import s1')
t2 = Timer('s2[10000:10003]', 'from __main__ import s2')
r1 = t1.timeit(number=10000000)
r2 = t2.timeit(number=10000000)
print("@@@@@")
print(r1)
print(r2)
########################################################
t1 = Timer('del s1[-4:]', 'from __main__ import s1')
t2 = Timer('s2[-4:]', 'from __main__ import s2')
r1 = t1.timeit(number=10000000)
r2 = t2.timeit(number=10000000)
print("-----")
print(r1)
print(r2)
### 위는 del과 slice를 list의 중간 부분에 대해서 실행
### 아래는 del과 slice를 list의 끝 부분에 대해서 실행
결과는
1차
@@@@@
7.005105000000185
0.5711318000012398
-----
0.3942191999994975
0.5312395000000834
2차
@@@@@
7.060493299999507
0.5323299000010593
-----
0.3989495999994688
0.5368330000001151
list의 중간 부분을 del 을 하는 것은 상당히 느리다, slice가 낫다
list의 끝 부분에 대해서는 slice를 하는 것보다 del이 빠르다.
(+ slice는 slice를 통해 새로운 변수를 할당 하는 경우에 쓰일 텐데,
list의 크기가 클수록 slice를 통해 새 변수를 할당하는 것이 메모리나 시간복잡도상 불리)
주의해서 사용하자
* timeit.Time
- Timer Class:
- The Timer class is used to measure the execution time of a code snippet.
- Constructor: Timer(stmt='pass', setup='pass', timer=<timer function>)
- stmt: The statement to be timed (default is 'pass').
- setup: The setup statement to prepare the environment for the timed code (default is 'pass').
- timer: The timer function (default is time.perf_counter()).
- timeit() Method:
- The timeit(number=1000000) method executes the timed code a specified number of times (default is 1,000,000) and returns the time it took for one iteration.
- You can use the result to calculate the average time per iteration.
- Command-Line Interface:
- The timeit module can also be used from the command line.
- When executed as a script, it can measure the execution time of a Python statement or script.
728x90
반응형
'Python' 카테고리의 다른 글
Python: Generator # 제너레이터 # yield (2) | 2023.12.01 |
---|---|
Python: Deep copy , Shallow copy, # mutable, immutable # 깊은 복사, 얕은 복사 (0) | 2023.11.26 |
Python: Union[bool, None] = None # Type hint (0) | 2023.11.20 |
Python: Error handling # 에러를 어떻게 다룰지를 쉽게 파악해보자 (0) | 2023.09.09 |
Python: 중첩 list comprehension # 이중 컴프리헨션 # itertools # chain (0) | 2023.08.09 |