import math
import time
times = []
for i in range(4):
start = time.time()
math.factorial(500000)
end = time.time()
times.append(end - start)
avg = sum(times)/4
print(f"{avg:.5f} sec")
결과
t2, t3 비교
결과
t2와 t3의 연산결과는 서로 비슷한 양상을 보였다.
평균적으로는 t3의 성능이 더 좋았다.
원인
팩토리얼 연산은 CPU 집중적인 작업이지만, T2와 T3 인스턴스 유형 모두 충분한 CPU 성능을 제공한다.
두 인스턴스 유형 모두 동일한 CPU 아키텍처를 사용한다.
사용된 운영 체제 및 버전, 컴파일러 및 컴파일 옵션 등이 동일한 경우 연산 결과는 비슷하게 나타날 가능성이 높다.
고찰
3번 그래프를 봤을 때, 인스턴스가 다시 연결될 때 서버의 상황에 따라 HW의 성능차이로 인해 발생된 현상 같다.
T계열의 경우 사용하지 않는 동안 cpu크레딧을 축적하고, 필요한 경우에 사용한다. 이것이 측정 결과에 반영된 것 같다.
t3 c6 비교
결과
범용으로 제작된 t3 인스턴스 유형보다 CPU의 특화된 c5 인스턴스 유형이 연산속도가 더 빨랐다.
원인
CPU 성능:
T3 인스턴스 유형은 기본적으로 더 낮은 클럭 속도를 가진 CPU를 사용한다.
C5 인스턴스 유형은 고성능 CPU를 사용하여 팩토리얼 연산과 같은 CPU 집중적인 작업에 더 적합하다.
캐시 용량:
C5 인스턴스 유형은 T3 인스턴스 유형보다 더 큰 L2 및 L3 캐시를 가지고 있다.
캐시 용량이 클수록 CPU가 메모리에 접근하는 데 걸리는 시간이 줄어들어 연산 속도가 향상된다.
Turbo Boost:
C5 인스턴스 유형은 Turbo Boost 기술을 지원하여 필요에 따라 CPU 클럭 속도를 자동으로 높일 수 있다.
이는 팩토리얼 연산과 같은 짧은 시간 동안 높은 CPU 성능이 필요한 작업에 유용하다.
x86_64 & arm64 비교
결과
평균적으로 x86 시스템 아키텍쳐를 사용하는 인스턴스 타입인 c5, r5의 계열이 연산속도가 더 빨랐다.
c계열이 r계열보다 더 빨랐다.
원인
명령어 집합:
ARM: RISC (Reduced Instruction Set Computing) 아키텍처를 사용하여 명령어 집합이 단순하다. 이는 전력 소비를 줄이는 데 도움이 되지만, 복잡한 연산을 처리할 때 속도가 느려질 수 있다.
x86: CISC (Complex Instruction Set Computing) 아키텍처를 사용하여 명령어 집합이 복잡하다. 이는 전력 소비가 더 높지만, 복잡한 연산을 처리할 때 속도가 빠를 수 있다.
클럭 속도:
일반적으로 ARM 프로세서는 x86 프로세서보다 클럭 속도가 낮다. 클럭 속도가 높을수록 같은 시간 안에 더 많은 작업을 처리할 수 있으므로 연산 속도가 빨라진다.
캐시:
캐시는 CPU가 빠르게 접근할 수 있는 작은 메모리 공간이다. 캐시 용량이 클수록 CPU가 메모리에 접근하는 데 걸리는 시간이 줄어들어 연산 속도가 빨라진다.
일반적으로 ARM 프로세서는 x86 프로세서보다 캐시 용량이 작다.
고찰
연산처리가 중요한 팩토리얼 코드로 테스트를 진행하다보니 cpu가 특화된 계열이 더 유리했다.