колл метода? Нагуглить именно такой кейс не смог(
typeid точно так же сделает лукап vtable, так что я бы не ждал особой разницы. ps: эксперимент никогда не лишний.
Да, но при vcall мы сразу берем нужную функцию из vtable по ее имени в качестве индекса, а при typeid мы должны еще сначала сравнить классы, чтобы войти в нужный свич, потом сделать static_cast поинтеров, хотя это копирование, примитива, а потом только вызовем нужную функцию по сдвигу. С другой стороны, тут все зависит от того, как именно устроена vtable и поиск по индексу в ней. Там же вряд ли O(1), ведь тогда бы пришлось хешировать имена функций. Так мб там линейный поиск O(n), в таком случае при огромных vtable у класса, способ с typeid должен быть быстрее
Зачем хешировать имена?
я бы даже спросил зачем там вообще оставлять имена
Да, согласен, стринги сравнивать все-таки в 99% дешевле, чем хеширования всякие делать
Ладно, следующий вопрос: зачем сравнивать строки?
Там адреса лежат? Мне изначально на уровне абстракций размышлять легче. Ладно, вопрос закрыт)
Там лежит буквально таблица с доступом по индексу
Обсуждают сегодня