Comments 9
Может быть буду непопулярен с таким мнением, но: и что? Если мы не на эмбедед железе, то какое нам дело до размеров виртуальной таблицы? На скорость это, конечно, влияет, но как сильно? Интересно было бы посмотреть на бенчмарки, желательно из реального кода, где кроме вызовов есть что-то ещё. Порог скорости при переходе с невиртуального вызвова, который потенциально инлайнится, на виртуальный мне понятен. А как влияет размер vtbl угадывать не возьмусь.
+2
С одной стороны, вы правы. С другой стороны, в статье и не написано, что нужно отказываться от того или иного инструмента. Там скорее о том, что любое лекарство, будучи неправильно применяемо, обращается в яд. И множественное наследование из чисто утилитарных требований «быть кем-то» и «уметь то-то» обращается в кадавра мегабайтных размеров, с рекурсивным спуском по дереву при каждом чихе.
+1
Уже написал в личку, автор не отреагировал, почему статья в хабе «Objective C»?
Намного логичнее разместить ее в «C++»
Намного логичнее разместить ее в «C++»
0
«Если я правильно всё посчитал, то он уже достигнет половины килобайта или около того»
Всю статью в виртуальную таблицу не заглядывали, а сейчас как-то её размер посчитали?
Хотя-бы перегрузите аллокатор и покажите сколько байт требуется на экземпляры классов, а в идеале разобрать как оно там лежит и как работает, а то сейчас это голословные утверждения.
Всю статью в виртуальную таблицу не заглядывали, а сейчас как-то её размер посчитали?
Хотя-бы перегрузите аллокатор и покажите сколько байт требуется на экземпляры классов, а в идеале разобрать как оно там лежит и как работает, а то сейчас это голословные утверждения.
0
В 32-х разрядной архитектуре размер будет равен 8. 4 — указатель + 4 int без выравнивания.
А как правильно писать по-русски — без выравнивания или без паддинга/слопа? Есть устоявшийся русский термин?
0
Sign up to leave a comment.
Виртуальность и оверхед