2012-06-14 2 views
1

데이터 시퀀스를 유지해야하는 응용 프로그램에서 작업 할 때 데이터의 모든 단위는 시퀀스 번호와 함께 제공됩니다. 시퀀스 번호가 이전 값보다 1 큰지 확인합니다. 나는 내받은 횟수를 1 씩 늘린다. 내 질문은, 차이가 있는지 여부이다.
1.받은 횟수를 1 씩 늘린다.

2. 마지막 수신 된 시퀀스 번호를 수신 된 카운트에 할당.할당 대 증가 연산

감사합니다.

+0

'C#'\'java' \'javascript' \'C' \'Ruby' \'Assembly' \ ...? – gdoron

+0

죄송합니다. 나는 C와 함께 일하고 있습니다. – keeda

+1

확실히 성능 차이는 무시할 수 있습니다. – jedwards

답변

6

고전적인 조기 최적화 질문 인 것 같습니다. 일반적으로 값을 올리면 "원래 가져 오기 -> 변경 -> 저장"을 의미하지만 할당하면 "다른 가져 오기 -> 새 저장"이됩니다. "기타"는 이미 페치 (fetch)되므로 더 많은 클럭 사이클을 절약 할 수 있습니다. 따라서 할당이 더 빠를 것입니다.

BUT 1은 일반적으로 컴파일러와 CPU가 가져 오기 나 저장이 필요하지 않도록 매우 잘 최적화되어 있습니다. 그것은 아주 잘 하나의 CPU 명령에서 수행 할 수 있습니다, 따라서 차이를 제거하고, 아마도 1에 의해 더 나은 옵션 성능을 현명하게 증가시킵니다.

혼동? 좋은.

요점은 병목을 벤치마킹하지 않는 한 이 아니며이 수행해야하는 최적화 종류입니다. 그런 다음 옵션을 벤치 마크하고 최선을 선택했습니다.

+0

나는 요점을 얻는다. 감사! – keeda

+2

이 답변은 멀티 스레드 환경에 대해 이야기하기 시작하면 바뀔 수 있습니다. 특히, 직접적인 아톰 스토어는 총알이 아닌로드/추가/저장보다 좋을 수 있습니다. –

+1

@keeda 다른 방법으로 테스트 해보면 간단한 벤치 마크를 작성하는 데 5 분이 채 걸리지 않을 것입니다. –