본문 바로가기

Python

Python: del vs slice 성능 비교

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
반응형