쿨러 없는 M1 맥북에어한테도 성능으로 못 비비는 나의 LG 노트북...ㅠㅠ
구글 코랩한테도 못 비비면 내 노트북은 더이상 컴퓨터로서 의미가 없다.....
그래서 시작된 자존심 대결...!
def work(st):
li = [i + 1 for i in range(400)]
for I, K, S in product(li, li, li):
assert math.ceil((I - (K - 1)) / S) == math.floor(((I - K) / S) + 1)
return
요 코드 빨리 실행하는 게 오늘의 과제. 먼저 구글 코랩의 성능을 보자.
Google Colab 무료버전
약 33.8초...!
i5-10210U 코멧레이크(4코어 8스레드, 1.60GHz/4.20GHz, 6M)
힘내 노트북아!!!!!!!!!!
똑같은 코드를 약 37.7초로 고작 싸이버 무료 CPU 따위에게 패배하고 만 나의 노트북.. 더이상 설 자리가 없어 보인다.
하지만 4코어를 다 갈군다면??
def work(st):
li = [i for i in range(1, 401)]
for I, K, S in product([j for j in range(st, st+100)], li, li):
assert math.ceil((I - (K - 1)) / S) == math.floor(((I - K) / S) + 1)
return
start = time.time()
if __name__ == '__main__': # must-have if block when taking multiprocessing
th1 = Process(target=work, args=(1,))
th2 = Process(target=work, args=(101,))
th3 = Process(target=work, args=(201,))
th4 = Process(target=work, args=(301,))
th1.start()
th2.start()
th3.start()
th4.start()
th1.join()
th2.join()
th3.join()
th4.join()
print(time.time() - start)
하드코딩 4배
원래 30% 정도 나오던 CPU 점유율을 75% 정도까지 가져갈 수 있었다!
16초!!! 겨우 자존심을 지켜낸 LG 울트라PC 노트북이었다
하지만 점유율이 고작 75%? 뭔가 부족해...
8개 프로세스 쥐여주기
if __name__ == '__main__': # must-have if block when taking multiprocessing
th1 = Process(target=work, args=(1,))
th2 = Process(target=work, args=(51,))
th3 = Process(target=work, args=(101,))
th4 = Process(target=work, args=(151,))
th5 = Process(target=work, args=(201,))
th6 = Process(target=work, args=(251,))
th7 = Process(target=work, args=(301,))
th8 = Process(target=work, args=(351,))
th1.start()
th2.start()
th3.start()
th4.start()
th5.start()
th6.start()
th7.start()
th8.start()
th1.join()
th2.join()
th3.join()
th4.join()
th5.join()
th6.join()
th7.join()
th8.join()
print(time.time() - start)
하드코딩 8배
물리 코어 4개밖에 없는 노트북에 8개의 프로세스를 쥐여주었다. 과연 결과는...?
점유율 122%로 자신의 한계를 박살내는 노트북장... 코랩 넘어보겠다고 별짓 다하는 것 같아서 무언가 안타깝다.
실행시간을 약 15.2초로 더 줄일 수 있었다.
결론
GPU 떼고 코어 다 써서 붙으면 노트북이 코랩보다 두 배 정도 빠르다.
코랩에서는 멀티스레딩 해봤자 성능은 똑같이 나오더라.