Sub MeasureSpeed()
Dim StartTime As Variant, EndTime As Variant
' 시작 시간 기록
StartTime = Timer
(예: 1부터 10000까지의 합 계산)
Dim sum As Variant
For i = 1 To 10000
sum = sum + i
Next i
' 종료 시간 기록
EndTime = Timer
' 실행 시간 계산 및 출력
MsgBox "매크로 실행 시간: " & Format(EndTime - StartTime, "0.00") & " 초"
End Sub위는 속도측정용 1~10000까지 누적합산하는 매크로입니다.
매크로는 너무 간단해서 볼것도 말것도 없구요.
엑셀 속도측정을 해보신 분들은 아시겟지만 저정도 계산은 1/1000 초 정도 걸립니다.
소스코드가 너무 단순해서 빠른 컴이건 느린컴이건 속도가 위처럼 나와요.
그런데 이상한건, 어떤 날은 1/1000 초 나오던게(정상임)
어떤 날은 1/100 초가 나와요. 어떤날은 1/300 초가 나오기도 합니다. (모두 비정상)
왜 이렇게 속도가 들쭉날쭉인지 이유가 무엇일까요?
아래를 읽어보시고 좀 유추해주시고, 이유를 알고 싶습니다.
< 아래는 제가 했던 실험 정리>
1. 소스코드가 문제인가? 알아보려고....
만약에 1/100 초가 나오는날( 비정상인 날 ) 소스코드를 고쳐서 1~10까지만 더해보는 걸로 소스코드를 고쳐도 1/100 초 가 나옵니다. 그냥 1+2만 계산하고 답은 3. 끝 ! 이런 계산만 하라고 소스코드를 고쳐도 1/300 초가 나옵니다. 그러므로 소스코드는 원인이 아니라고 결론.
2. 그럼 컴 문제인가? 생각해서....
만약에 1/100 초가 나오는날( 비정상인 날 ) 이 엑셀파일을 그대로 복사해서 다른 컴에서 실행해도 또 마찬가지로 1/100 초 가 나옵니다. 컴을 바꿔도 비정상인거죠. 매우 희안합니다. 그러므로 컴이 원인이 아니라고 결론.
3. 그럼 아예 새로 엑셀을 열고, 처음부터 위 소스를 그대로 타자를 치고 저장.
동일작동을 하는 새로운 엑셀 파일을 만든거죠. 이제야 비로소 1/1000 초가 나옵니다. (정상) 그런데 이게 며칠간 잘 되다가 또 이 파일도 느려져서 1/100 초로 될 것으로 예상.
저의 결론 : 위와같이 소스코드 문제 아님. 컴문제 아님. 위 3 과정을 유추하면, 잘되던 엑셀을 며칠 실행하면, 내가 모르는 것이 엑셀 안에 포함? 들어가버리는거 같음. 그것때문에 느려지는거 같음. 그래야 위 3이 설명이 되잖아요.

3번의 1/1000 으로 빠른 파일
2개 파일이 지금 있나요?
더 정밀한 시간 측정하는 방법으로 측정해 보세요.
같은 매크로도 반복 테스트하면 시간이 달라집니다.
컴퓨터에서 할당하는 자원의 우선순위 같은 것까지 VBA나 Excel이 관장하지 않으니까요.
결국 실행속도는 PC의 현재 상태에 따른 상대적인 비교일 뿐이라고 생각합니다.
그래서 코드의 최적화가 되어 있는 상태인지가 더 중요하다고 생각하는 1인입니다.