사용자 정의 유형의 경우 적절한 초기화 코드를 사용할 수있을 때까지 변수의 정의를 연기하면 성능이 향상 될 수 있습니다. 왜?값에 대한 초기화가 성능에서 할당과 어떻게 비교됩니까?
답변
특히 사용자 정의 유형의 경우 생성자와 설정 방법이 임의로 복잡하고 시간이 오래 걸릴 수 있습니다. 스티븐의 예를 촬영 :
X x; // Calls X()
x.Set(42);
X x(42); // Calls X(int)
...는 X의 구현 : X()와 X : 설정() 수도 모두 될 매우 당신이 읽었 이유의 시간이 소요 및 후자는 더 나은 성능을 가질 수 있습니다.
당신은 적절한 초기화 데이터를 사용할 때 초기화 호출 다음에 불필요한 생성자를 실행하지 마십시오. 그리고 코드 경로가 초기화 브랜치에 도달하지 못하면 생성자와 소멸자를 모두 피할 수 있고 unwinding을위한 예외 처리 상태 설정을 피할 수 있습니다.
좋은 지적. 얼마나 많은 변수를 맨 위에 선언하고 매개 변수가 null이기 때문에 즉시 종료하는 함수를 보았습니까? (수사학적인 질문) –
문자열 클래스를 고려하십시오. 우리가 말하는 경우 :
다음에 우리는 s의 구성에서 몇 가지 작업을 수행해야하며, 할당 작업에서 더 많은 또는 적은 작업을 반복해야합니다. 우리가하는 경우 :
string s("foobar");
우리는 한 번만 작업을합니다.
C++을 배워야 할 때 이 아니어야합니다.은 결코 성능 문제에 관심이 없습니다. 명확하고 이해하기 쉬운 코드 만 쓰면됩니다. 그리고이 경우 변수를 항상 초기화하면 값으로 초기화하는 것이 더 명확 해집니다.
그리고 BTW는 언어를 C++이라고 부릅니다 - cpp는 C 전처리 기입니다.
역설적이게도 C++의 첫 번째 구현은 C 로의 번역자였습니다. 본질적으로 단지 전처리 기일뿐입니다. :-) –
@Steven 아닙니다. 저는 그것을 사용했습니다. 이것은 타겟 언어로서 C를 방출하는 컴파일러 (번역자 또는 프리 프로세서가 아닙니다)였습니다. 나는이 신화가 죽었 으면 좋겠다. –
@Neil - 알아두면 재미 있습니다. 필자의 경우 C++에 대한 첫 경험은 CFront (http : //en.wikipedia.org/wiki/Cfront) 그리고 저는 그것이 실제로 전처리 기 였다고 믿습니다. –
- 1. Formtastic과 simple_form은 어떻게 비교됩니까?
- 2. EAV는 RDF와 어떻게 비교됩니까?
- 3. 프리즘은 칼리 번과 어떻게 비교됩니까?
- 4. ICEfaces에 대한 귀하의 경험은 어떻습니까? 그것은 개찰과 어떻게 비교됩니까?
- 5. Python과 PHP는 전자 상거래에서 어떻게 비교됩니까?
- 6. 인덱싱 성능에서 BigInt varchar을
- 7. asp.net 및 성능에서 UserControls
- 8. jQuery 모달 상자 플러그인은 어떻게 비교됩니까?
- 9. HP (탠덤) 논스톱은 Linux 클러스터와 어떻게 비교됩니까?
- 10. 시험 값에 대한 레코드
- 11. 루프 성능에서 db에 데이터를 삽입하십시오.
- 12. 메모리 할당과 C의 상속 클래스 ++
- 13. 여러 값에 대한 IComparer
- 14. 단일 값에 대한 맵
- 15. 변수 할당과 읽기 원자 작업입니까?
- 16. NFA 장단점은 DFA와 비교됩니까?
- 17. 정규화 된 URL은 파이썬에서 비교됩니까?
- 18. ArcEngine 초기화가 빨라지니까?
- 19. C# 구조체 초기화가 제대로
- 20. C++는 값에 의한 전달 내부의 할당과 참조 함수에 의한 전달 사이에 차이점이 있습니까?
- 21. 연속 값에 대한 m 추정치
- 22. 반환 값에 대한 연산 수행
- 23. 잘못된 셀 값에 대한 경고
- 24. 범위의 값에 대한 템플릿 전문화
- 25. 0 값에 대한 조건 검사
- 26. null 값에 대한 Ext.util.Format.undef 기능
- 27. 문자열 내 값에 대한 테스트
- 28. 선택 목록 값에 대한 FluentValidation
- 29. Corosync, ZeroMQ 및 Spread의 CPG는 메시징과 어떻게 비교됩니까?
- 30. Google App Engine은 웹 호스팅 계획과 어떻게 비교됩니까?
코드가 훨씬 간결하고 깨끗해 졌기 때문에 그렇게 할 것입니다. 변수를 정의한 다음 나중에 사용할 때까지 사용하지 않는 것이 좋습니다. – GManNickG
@GMan : 그것은 또 다른 좋은 지적입니다. 변수 사용 범위가 작을수록 코드를 쉽게 따라갈 수 있습니다. –