Re[10]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.11.19 14:38
Оценка: +6
Здравствуйте, Denis Ivlev, Вы писали:

DI>>>Неудачное стечение обстоятельств и вызов ВФ оказывается медленней в сотни раз. При этом в С виртуальные функции при необходимости делаются легко.


Pzz>>Откуда там в сотни раз?


DI>Из архитектуры компьютера:


Это может вообще любого компьютерного телодвижения коснуться, и не специфично для виртуальных методов. Но вообще, в C++, в котором таблица виртуальных методов общая для всех экземпляров класса, у нее больше шансов оказаться в кэше, чем у указателей, размазанных по миллиону структур.

DI>Заинлайненая функция будет запрефетчена в кеш инструкций, поход только в таблицу виртуальных функций, если она не оказалась в кеше может стоить в 200 раз больше, а еще и саму функцию затем надо вызвать, а это еще один поход в память. Но даже если она и не будет заинлайнена, то это все равно сильно дешевле.


Заинланйенная фукция может запросто отжать из кэша инструкций что-нибудь другое, не менее полезное. Я к тому, что инлайн может и ускорять программу, а может наоборот.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.