2013-07-03 4 views
1

x += 1 또는 x = x+1을 사용하시는 것이 좋을지 혼란 스럽습니다. 나는 그들 모두가 같은 결과를 산출한다는 것을 압니다. 실제로 x = x+1 대신 x+=1을 사용할 때 성능이 향상됩니까? 내 프로그램을 더 빨리 실행할 수 있습니까?x = x + 1 대신 x + = 1을 사용할 때 성능상의 이점이 있습니까?

+1

언어를 지정하지 않았으므로이 질문을 대답하기가 불가능합니다. "보편성에 중점을 두어"우선 많이 사용합니다 ... –

+1

잘못된 방법을 추가하기 때문에 프로그램이 너무 느리게 실행되는 경우 , 그러면 훨씬 큰 문제가 생깁니다. 하나를 추가하는 것은 결코 당신이 그것을 성취하는 방법에 관계없이 결코 병목이 될 수 없습니다. – abelenky

+0

@abelenky -'x = x + 1' *은'x '가 문자열 인 경우 병목 현상이 될 수 있습니다 :-) –

답변

5

x += 1x = x + 1에 대한 구문 단축키입니다. AFAIK, 어떤 기계 (CPU) 레벨 명령 세트도 원자 조작으로 x += 1을 수행하라는 지시 사항이 있습니다. CPU가 실행하는 실제 코드는 동일해야합니다.

+3

x86에서'INC'는 무엇입니까? : P –

+0

x86 INC 명령어는 기본이 아닙니다. 당신은 INC DWORD가 PTR [EAX]' 낮은 수준의 분해가 생각보다 같을 것이다'실행하는 경우 : 'uOp.load tmp_reg, [EAX]' 'uOp.inc tmp_reg' 'uOp.store [EAX] , tmp_reg' 이므로 원자 적으로 실행되지 않습니다. 분명히, 단지 상식에서, 현재 값을 읽고, 그것에 1을 더하는 것은 두 개의 분리 된 프로세스입니다. –

2

좋은 컴파일러는 두 표현식에 동일한 기계어 코드를 제공해야합니다.

+0

일부 언어는 기계어 코드로 컴파일되지 않습니다. – abelenky

+4

결국, 모두 그렇습니다. CPU는 내부 명령 세트와 일치하는 코드를 제외하고는 아무 것도 실행할 수 없습니다. 때로는 중간 기계 언어 버전을 건너 뛸 수 있지만 때로는 변환해야합니다 (어셈블리라고 부름) - CPU 명령 집합에 하나씩 일치해야합니다. –

+1

'2 진 명령어 코드'- CPU는 그 밖의 것을 알지 못합니다. –