문제

우리에게 부정적인 정수가 있다고 말하면 int a;

-A의 더 빠른 구현이 있습니까?

이것에 대해 약간의 작업을 수행해야합니까?

도움이 되었습니까?

해결책

Pax의 진술을 명확히하기 위해

C ++ 컴파일러는 1 건을 제외하고 2의 보완을 사용하도록 의무화되지 않습니다. 서명 된 유형을 서명되지 않은 유형으로 변환 할 때 숫자가 음수 인 경우 변환 결과는 정수의 2 보완 표현이어야합니다.

요컨대, -A보다 빠른 방법은 없습니다. 있더라도 휴대가되지 않을 것입니다. 조기 최적화가 악하다는 것을 명심하십시오. 먼저 코드를 프로파일 한 다음 병목 현상에서 작업하십시오.

보다 C ++ 프로그래밍 언어, 제 3 판., 섹션 C.6.2.1.

다른 팁

컴파일러가 이것을 만들 가능성이 높다는 기계 코드의 명령보다 거의 더 빠른 것은 없습니다.

있다면 컴파일러가 사용할 것이라고 확신합니다.

TWOS- 보상 번호의 경우, 당신은 그것을 할 수 없었고 1을 추가 할 수는 있지만 거의 확실히 느리게 될 것입니다. 그러나 C/C ++ 표준이 TWOS- 보상의 사용을 의무화 할 것이라고 전적으로 확신하지는 못합니다 (확인하지 않았을 수도 있습니다).

이 질문은 다시 쓰려고 시도하는 질문에 속한다고 생각합니다. strcpy() 더 빠른 속도를 얻는 등. 그 사람들은 순진하게 C 도서관이라고 가정합니다 strcpy() 특수 기계 코드 지침을 사용하여 이미 크게 최적화되지 않았습니다 (대부분의 사람들의 첫 번째 시도가 될 단순한 루프 대신).

부정이 지나치게 오랜 시간이 걸리고 있음을 나타내는 성능 테스트를 실행 했습니까?

u003Csubtle-humor-or-what-my-wife-calls-unfunny>

    486의 무도원 (클록 사이클에 대해 마지막으로 걱정해야 할 최신 기술)은 3 클럭 사이클 (메모리 버전, 레지스터 1 개만 1)을 사용합니다. 나중에 칩이 비슷하다고 가정합니다. 3GHz CPU에서는이 매 초마다 10 억 달러를 할 수 있음을 의미합니다. 충분하지 않습니까?

u003C/subtle-humor-or-what-my-wife-calls-unfunny>

"조기 최적화"라는 문구를 들어 본 적이 있습니까? 최적화 된 경우 모두 코드 중에서, 이것은 유일한 것입니다. 그렇지 않다면, 당신은 당신의 시간을 낭비하고 있습니다.

숫자를 부정하는 것은 CPU 하드웨어 측면에서 매우 간단한 작업입니다. 나는 약간의 작업을 수행하는 것보다 부정을하는 데 더 오래 걸리는 프로세서를 알지 못하며 약 30 년 된 프로세서가 포함됩니다.

궁금한 점이,이 질문을하게 된 이유는 무엇입니까? 병목 현상을 감지했기 때문이 아닙니다.

아마도 당신은 이와 같은 작은 것보다 알고리즘을 최적화하는 것에 대해 생각해야 할 것입니다. 이것이 마지막으로 최적화 해야하는 경우, 코드는 얻을만큼 빠릅니다.

모든 좋은 답변.

만약에 (-a) 차이를 만듭니다. 이미 정말 공격적인 성능 튜닝을했습니다.

성능 조정 프로그램은 젖은 스폰지에서 물을 꺼내는 것과 같습니다. 프로그램이 처음 작성되었으므로 꽤 젖습니다. 약간의 노력으로, 당신은 그것에서 시간을 낼 수 있습니다. 더 많은 노력으로 더 많이 건조시킬 수 있습니다.

당신이 정말로 지속적이라면, 당신은 그것을 뜨거운 태양에 넣어야하는 곳으로 가져 가서 마지막 몇 시간 분자를 얻을 수 있습니다.

그것이 수준입니다 (-a) 차이를 만들 수 있습니다.

숫자를 부정하는 성능 문제가 있습니까? 나는 대부분의 컴파일러가 정수에 대해 약간의 OP를 수행하기 위해 약간의 OP를 수행 할 것이라고 생각하는 데 어려움을 겪고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top