x += 1
또는 x = x+1
을 사용하시는 것이 좋을지 혼란 스럽습니다. 나는 그들 모두가 같은 결과를 산출한다는 것을 압니다. 실제로 x = x+1
대신 x+=1
을 사용할 때 성능이 향상됩니까? 내 프로그램을 더 빨리 실행할 수 있습니까?x = x + 1 대신 x + = 1을 사용할 때 성능상의 이점이 있습니까?
답변
x += 1
은 x = x + 1
에 대한 구문 단축키입니다. AFAIK, 어떤 기계 (CPU) 레벨 명령 세트도 원자 조작으로 x += 1
을 수행하라는 지시 사항이 있습니다. CPU가 실행하는 실제 코드는 동일해야합니다.
x86에서'INC'는 무엇입니까? : P –
x86 INC 명령어는 기본이 아닙니다. 당신은 INC DWORD가 PTR [EAX]' 낮은 수준의 분해가 생각보다 같을 것이다'실행하는 경우 : 'uOp.load tmp_reg, [EAX]' 'uOp.inc tmp_reg' 'uOp.store [EAX] , tmp_reg' 이므로 원자 적으로 실행되지 않습니다. 분명히, 단지 상식에서, 현재 값을 읽고, 그것에 1을 더하는 것은 두 개의 분리 된 프로세스입니다. –
좋은 컴파일러는 두 표현식에 동일한 기계어 코드를 제공해야합니다.
일부 언어는 기계어 코드로 컴파일되지 않습니다. – abelenky
결국, 모두 그렇습니다. CPU는 내부 명령 세트와 일치하는 코드를 제외하고는 아무 것도 실행할 수 없습니다. 때로는 중간 기계 언어 버전을 건너 뛸 수 있지만 때로는 변환해야합니다 (어셈블리라고 부름) - CPU 명령 집합에 하나씩 일치해야합니다. –
'2 진 명령어 코드'- CPU는 그 밖의 것을 알지 못합니다. –
언어를 지정하지 않았으므로이 질문을 대답하기가 불가능합니다. "보편성에 중점을 두어"우선 많이 사용합니다 ... –
잘못된 방법을 추가하기 때문에 프로그램이 너무 느리게 실행되는 경우 , 그러면 훨씬 큰 문제가 생깁니다. 하나를 추가하는 것은 결코 당신이 그것을 성취하는 방법에 관계없이 결코 병목이 될 수 없습니다. – abelenky
@abelenky -'x = x + 1' *은'x '가 문자열 인 경우 병목 현상이 될 수 있습니다 :-) –