긴 버전 ...
동료는 오늘 while (1)
Perl 스크립트에서 for (;;)
더 빠른 사용을보고 나서 주장했다 . 나는 그들이 통역사가 어떤 차이를 최적화하길 바라고 같은 것이되어야한다고 주장했다. 루프 반복 및 동일한 수의 while 루프에 대해 1,000,000,000을 실행하고 그 사이의 시간을 기록하는 스크립트를 설정했습니다. 나는 눈에 띄는 차이를 찾을 수 없었다. 저의 동료는 교수가 그에게 while (1)
비교를 1 == 1
하고 있지만 for (;;)
그렇지 않다고 그에게 말했습니다 . 우리는 C ++로 반복 횟수를 100 배로 동일한 테스트를 반복했으며 그 차이는 무시할 만했습니다. 그러나 컴파일 된 코드가 스크립팅 언어에 비해 얼마나 빠른지를 보여주는 그래픽 예입니다.
짧은 버전 ...
탈출하기 위해 무한 루프가 필요한 경우 while (1)
오버 오버 를 선호하는 이유 for (;;)
가 있습니까?
참고 : 질문에서 명확하지 않은 경우. 이것은 순전히 두 친구 사이의 재미있는 학술 토론이었습니다. 나는 이것이 모든 프로그래머가 고민해야 할 매우 중요한 개념이 아니라는 것을 알고 있습니다. 이 토론에서 몇 가지를 배웠습니다.
업데이트 : 위에서 언급 한 동료의 무게는 다음과 같습니다.
그것이 묻힐 경우를 대비하여 여기에 인용하십시오.
AMD 어셈블리 프로그래머가 제공 한 것입니다. 그는 C 프로그래머들 (사람들)은 그들의 코드가 비효율적이라는 것을 깨닫지 못한다고 말했다. 그는 오늘 gcc 컴파일러는 매우 훌륭하며 그와 같은 사람들을 사업에서 제외 시켰다고 말했다. 그는 예를
while 1
들어서 vs 에 대해 이야기했습니다for(;;)
. 지금은 습관이 없지만 gcc 및 특히 통역사는 최적화되어 있기 때문에 요즘 두 가지 모두 동일한 작업 (프로세서 점프)을 수행합니다.