응용 프로그램이 충돌 할 때 스택 추적을 원합니다. 필자는 -rdynamic 옵션을 사용하여 함수 이름과 함께 완전한 스택 추적을 얻을 수 있음을 알고 있습니다. 하지만 내 응용 프로그램의 성능에 영향을 미칠지 걱정됩니다.gcc/g ++에 -rdynamic 링커 옵션을 추가하면 성능에 영향을 줍니까?
19
A
답변
19
매우 구체적이고 일반적으로 우려 할 필요는 없지만 그렇습니다.
-rdynamic 옵션은 런타임에 일반적으로 필요하지 않은 기호 테이블에 기호를 추가하도록 링커에 지시합니다. 즉, 동적 링커가 심볼 해석을 위해 런타임에 제거해야하는 심볼이 더 많거나 많을 수 있음을 의미합니다.
특히, GNU 기반 시스템의 심볼 테이블 검색은 해시를 사용하여 구현되므로 더 많은 심볼을 포함하면 해시 충돌이 발생할 가능성이 높아집니다. 해시 테이블에서 충돌하는 모든 symols가 목록에 있으므로 실행 시간 링커는 목록을 탐색하고 각 심볼 이름을 memcmp를 사용하여 비교해야합니다. 긴 기호를 갖는 해시 의미에서 더 많은 기호가 충돌하므로 각 동적 기호를 해결하는 데 더 많은 시간이 걸립니다.
이 상황은 C++의 경우 C가 약간 나빠지며 클래스 이름으로 인해 앞에 동일한 심볼 이름이 여러 개 있습니다.
실제로 이것은 기호가 처음 사용되었을 때만 영향을 미치므로 응용 프로그램이 매우 크고 많은 기호가 포함되어 있지 않으면 느껴지지 않습니다.
아주 드문 경우이지만 응용 프로그램이 큰 경우 prelinking과 같은 트릭을 사용하여 오버 헤드를 극복 할 수 있습니다.
관련 문제
- 1. IHTTPModule 성능에 영향을 줍니까?
- 2. NUnit이 성능에 영향을 줍니까?
- 3. 중복 캐스트가 성능에 영향을 줍니까?
- 4. Sysout은 tomcat 성능에 영향을 줍니까?
- 5. 액세스 한정자는 성능에 영향을 줍니까?
- 6. 데이터베이스보기가 쿼리 성능에 영향을 줍니까?
- 7. 난독 화가 성능에 영향을 줍니까?
- 8. 중첩 구조체가 성능에 영향을 줍니까?
- 9. 404 오류가 성능에 영향을 줍니까?
- 10. Linux에서 ACL이 성능에 영향을 줍니까
- 11. 시작 블록이 조건문의 성능에 영향을 줍니까?
- 12. 마크 업 페이지 (aspx)에 서버 측 코드를 추가하면 성능에 영향을 줍니까?
- 13. web.config의 사용하지 않는 행은 성능에 영향을 줍니까?
- 14. SetFileBandwidthReservation이 메모리 매핑 파일 성능에 영향을 줍니까?
- 15. 이 javascript 문은 성능에 영향을 줍니까?
- 16. URI에 공백 문자가 있으면 성능에 영향을 줍니까?
- 17. Eclipse에서 원격 자원 캐싱이 성능에 영향을 줍니까?
- 18. 예외가 응용 프로그램의 성능에 영향을 줍니까?
- 19. GraphicsPath.Flatten()은 그리기 성능에 어떤 영향을 줍니까?
- 20. 데이터베이스의 열 순서가 성능에 영향을 줍니까?
- 21. 데이터 유형 선택이 성능에 영향을 줍니까?
- 22. auto_increment 값 변경이 MySQL의 성능에 영향을 줍니까?
- 23. 여러 xmlns 속성이 페이지 성능에 영향을 줍니까?
- 24. 로깅 문이 응용 프로그램 성능에 영향을 줍니까?
- 25. 긴 형식 이름이 성능에 영향을 줍니까?
- 26. GAC에서 사용되지 않는 어셈블리가 성능에 영향을 줍니까?
- 27. WHERE 절의 필드 순서가 성능에 영향을 줍니까?
- 28. Smarty {strip} 사용은 성능에 어떤 영향을 줍니까?
- 29. NUMA 아키텍처는 ActivePivot의 성능에 어떤 영향을 줍니까?
- 30. 디렉토리의 파일 수가 성능에 어떤 영향을 줍니까?