i7-4790을 2014년도 부터 사용하다가 6년만에 i7-10700으로 바꿨다. 램도 DDR4를 달았다.
지난번 i7-4790 과 비교에서 for문의 성능이 얼마나 좋아졌나 알아보기로 한다.
지난번 테스트는 아래와 같다.
10초동안 누산하는 방식이었다. 이번엔 C++ 부터 본다. 이전 포스팅과 동일한 소스코드로 돌렸다.
#include <tchar.h>
#include <iostream>
#include <ctime>
unsigned long long Adder(unsigned long long number) {
unsigned long long sum = 0;
unsigned long long i;
for (i = 1; i <= number; i++) {
sum += i;
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
unsigned long long sum = 0, count = 100000000;
clock_t st1, ed1;
do {
st1 = clock();
sum = Adder(count);
ed1 = clock();
printf("*\nCount added : %llu, ", count);
printf("*Sum value : %llu, ", sum);
printf("%e\n", (double)sum);
printf("*Time elapsed: %d\n", ed1 - st1);
count += 500000000;
} while ((ed1 - st1) < 10000);
return 0;
}
결과는 아래와 같다. i7-4790 에서는 10초 동안 42억까지 누산할 수 있었다. for문으로 1부터 42억까지 더하는데 10초가 걸린 것이다. i7-10700 에서는 동일한 시간동안 61억번 할 수 있었다.61 - 42 = 19 이니까 19억번 for문을 더 돌렸다. 비율로는 145% 속도가 빨라졌다.
*
Count added : 100000000, *Sum value : 5000000050000000, 5.000000e+15
*Time elapsed: 176
*
Count added : 600000000, *Sum value : 180000000300000000, 1.800000e+17
*Time elapsed: 1058
*
Count added : 1100000000, *Sum value : 605000000550000000, 6.050000e+17
*Time elapsed: 1935
*
Count added : 1600000000, *Sum value : 1280000000800000000, 1.280000e+18
*Time elapsed: 2804
*
Count added : 2100000000, *Sum value : 2205000001050000000, 2.205000e+18
*Time elapsed: 3671
*
Count added : 2600000000, *Sum value : 3380000001300000000, 3.380000e+18
*Time elapsed: 4553
*
Count added : 3100000000, *Sum value : 4805000001550000000, 4.805000e+18
*Time elapsed: 5442
*
Count added : 3600000000, *Sum value : 6480000001800000000, 6.480000e+18
*Time elapsed: 6307
*
Count added : 4100000000, *Sum value : 8405000002050000000, 8.405000e+18
*Time elapsed: 7195
*
Count added : 4600000000, *Sum value : 10580000002300000000, 1.058000e+19
*Time elapsed: 7593
*
Count added : 5100000000, *Sum value : 13005000002550000000, 1.300500e+19
*Time elapsed: 8478
*
Count added : 5600000000, *Sum value : 15680000002800000000, 1.568000e+19
*Time elapsed: 9335
*
Count added : 6100000000, *Sum value : 158255929340448384, 1.582559e+17
*Time elapsed: 10224
다음 파이썬이다.
import time
def loop_sum(lcount):
global sum
for i in range(1, lcount + 1):
sum += i
loop_count = 10000000
sum = 0
start = 0; end = 0
while True:
start = time.time()
loop_sum(loop_count)
end = time.time()
print("Count added : ",loop_count)
print("Sum : ",sum)
print("Time elapsed : ", round(end-start,3),"sec")
if end-start > 10.0:
break
loop_count += 10000000
i7-4790 에서 10초동안 9천만번 for 루프를 했다. i7-10700 에서는 1억3천만번 루프했다. 0.5초가량 오차가 있는데 간격으로 보면 500만번 정도 더 돌았을 것이다. 135 - 90 = 45 로 4천5백만개의 for 루프를 더 돌았다. 비율로는 150%로 C++ 보다 5% 높다. 그런데 테스트를 할 때 마다 약간의 차이가 있었다.
Count added : 10000000
Sum : 50000005000000
Time elapsed : 0.746 sec
Count added : 20000000
Sum : 250000015000000
Time elapsed : 1.559 sec
Count added : 30000000
Sum : 700000030000000
Time elapsed : 2.339 sec
Count added : 40000000
Sum : 1500000050000000
Time elapsed : 3.119 sec
Count added : 50000000
Sum : 2750000075000000
Time elapsed : 3.915 sec
Count added : 60000000
Sum : 4550000105000000
Time elapsed : 4.656 sec
Count added : 70000000
Sum : 7000000140000000
Time elapsed : 5.461 sec
Count added : 80000000
Sum : 10200000180000000
Time elapsed : 6.24 sec
Count added : 90000000
Sum : 14250000225000000
Time elapsed : 7.047 sec
Count added : 100000000
Sum : 19250000275000000
Time elapsed : 7.788 sec
Count added : 110000000
Sum : 25300000330000000
Time elapsed : 8.602 sec
Count added : 120000000
Sum : 32500000390000000
Time elapsed : 9.354 sec
Count added : 130000000
Sum : 40950000455000000
Time elapsed : 10.152 sec
Process finished with exit code 0
CPU 코어 클록과 배수 모두 i-10700 이 높다. 10700은 4.6기가 까지 간다.
CPU 온도도 낮게 유지된다. 4790은 기본 쿨러를 사용했고, 10700은 사제 농협쿨러를 달았다. 30도를 유지하니 매우 쾌적하다. 게다가 코어수가 두배다. (코어수 8 스레드 16개)
i7-10700으로 바꾸면서 45%~50%의 성능 향상을 보여줘서 만족하고 있다. 아직 그래픽 카드는 1060을 그대로 쓰고 있지만 3060이나 3070 제품이 나오면 구매를 고려중이다.