저는 마이크로 최적화 인 code for identifying object types입니다.동일한 type_info 주소는 동일한 유형을 의미합니까?
SomeCommonBase& first = ...;
SomeCommonBase& second = ...;
const type_info& firstInfo = typeid(first);
const type_info& secondInfo = typeid(second);
if(&firstInfo == &secondInfo || firstInfo == secondInfo) {
//identical types
} else {
//different types
}
논리는 type_info
참조가 반환되면 해당 참조 뒤에 개체가 live until the module is unloaded 보장된다는 점이다 : 나는 같은 모듈에서 인스턴스화 두 개체가 동일한 유형이 있는지 제가 확인하기 위해 다음을 사용할 수 있습니다 가정합니다. 따라서 참조가 반환되면 다른 객체가 동일한 주소를 차지할 수 없습니다.
따라서 주소가 일치하면 type_info
개의 개체와 동일한 데이터 형식이됩니다. 구현에 의해 같은 종류의 다른 객체 인 type_info
이 반환되면 type_info::operator==
이 호출되고 추가 검사가 수행됩니다.
올바른 가정입니까?
저는 Visual Studio가 이미이 작업을 수행하고 있다고 생각합니다. 조기에 조심하지 말고 ... –
@Bo Persson : 나는 신중하게 측정하고 당신이 옳은 것처럼 보입니다. 차이는 매우 작습니다. 단지 함수 호출 만 저장하는 것 같습니다. 어쨌든 코드의 작은 조각을 사방에 약간의 속도 향상을 가지도록 변경해도 상관 없습니다. – sharptooth