-
[VBA/Tip] Range().Value 와 For...Next loop의 효율성, 속도 비교 - ChatGPT의 거짓말코딩/vba 2023. 3. 27. 07:37728x90
아래 내용은 ChatGPT로부터 받은 내용인데, 실제 테스트를 해보니 아래 내용을 인정할 수가 없었다.
ChatGPT의 답변
일반적으로 VBA에서 For 루프를 사용하는 것이 범위 할당보다 더 빠르고 효율적입니다.
이유는 Range 객체를 작성하고 값을 할당하는 작업이 많은 더 많은 계산을 필요로 하기 때문입니다.
따라서, For 루프를 사용하여 각 셀에 값을 할당하는 것이 더 빠르고 효율적입니다.
그러나, 데이터의 크기와 복잡성에 따라 상황이 달라질 수 있으므로, 작업을 수행하기 전에 시간을 측정하고 둘 중 어떤 것이 더 효율적인지 확인하는 것이 좋습니다.
set r = Range("A1:A100") r.Value = 100 For i=1 to 100 Cells(i,1)=100 Next i
테스트 결과 - ChatGPT의 뻥
원본시트의 원시데이터 영역을 Variant Array로 복사한 후 대상시트의 항목에 맞춰 데이터를 복사하는 작업과, 배열을 사용하지 않고 셀 하나씩 For...Next문을 사용해서 복사해 봤는데, 행열을 400x6으로 해보니 후자는 약 30초가 걸렸고, 배열을 사용한 결과는 1초가 걸리지 않았다.
시간차이가 너무 많이 나서 충격받았다.
이렇게나 차이가 많이 나는데 평소 대충 썼다니...
물론 내가 쓰는 환경은 맥의 패러렐즈 가상 윈도우라 일반 피시보다는 느리다.
그걸 감안해도 차이가 너무 컸다.
결론적으로 ChatGPT가 또 거짓말을 했다.
누군가 그럴싸하게 거짓글을 써 놓으면 ChatGPT는 그럴싸한 논리로 포장을 한다.
728x90'코딩 > vba' 카테고리의 다른 글
VBA/.Value와 .Formula의 차이 (1) 2023.12.21 [VBA/Set 키워드] 개체 참조 Set 키워드 (0) 2023.06.06 [VBA/Array] Not Not Array 로 배열원소 확인하기 (0) 2023.04.01 [VBA] 영역을 csv로 저장하기 (0) 2023.03.31 [VBA/Tip] Array 사용 시 Lbound() 문제 (0) 2023.03.27