... подразумевается, что это дело должно работать очень быстро, так как нет никаких вызовов if или switch для изменения работы программы, только один раз при инициализации выбрали нужный класс - потомок, дальше все работает прямо и просто.
...
MetaDriver:
...
В зыках с "настоящими" указателями такого эффекта не будет, там switch будет проигрывать - тем больше, чем больше список выборов.
...
Ребята, курите документацию по switch. Хороший switch - это коммутируемый переход, чья производительность не зависит от количества вариантов выбора. 1 вариант, 100 или 1000 - скорость его перехода будет постоянной.
ВНИМАНИЕ! Вопросы по существу обсуждаемого вопроса просьба задавать здесь или создать тему на форуме и кинуть на неё ссылку в блог или мне в личку. Причин для этого несколько. Я, как и любой другой автор, всегда могу упустить интересный момент обсуждаемой темы (что подтвердилось на практике). А потому задаваемый вопрос может закрывать...
C-4: Ребята, курите документацию по switch. Хороший switch - это коммутируемый переход, чья производительность не зависит от количества вариантов выбора. 1 вариант, 100 или 1000 - скорость его перехода будет постоянной.
Да, у нас switch с прямым прыжком по таблице, если есть достаточное количество элементов, как в примерах.
я в программировании близок к нулю и знаю что ООП больше сделан для удобства нежели для скорости. И правда - ООП удобная штука, если уметь ею пользоваться.
Метаквотсам же лучше уделить время некорректному спреду в тестере. Толку писать на нем экспертов если протестить адекватно их нельзя. Большей частью это относится к торговле на FORTS.
я в программировании близок к нулю и знаю что ООП больше сделан для удобства нежели для скорости. И правда - ООП удобная штука, если уметь ею пользоваться.
Метаквотсам же лучше уделить время некорректному спреду в тестере. Толку писать на нем экспертов если протестить адекватно их нельзя. Большей частью это относится к торговле на FORTS.
Более подробное объяснение (доказательства) уже приводили где-то ?
Здесь принято доказательством свои заявления подкреплять, иначе даже смотреть на станут. ;)
Доказательства будут с другой стороны. Или опять только слова.
По большому счету интересует только факты.
Хотя я и так знаю что ООП работает медленнее, но предоставляет вполне конкретные удобства
В понедельник на примере профилирования реального ООП-проекта покажу что его производительность в пределе стремится к производительности вызовов системных функций.
Странное утверждение. Вы пытаетесь решить оптимизационные задачи уровня компилятора и при этом не знаете как он устроен.
Извините, вы что-то перепутали, компилятор я не пытался оптимизировать. Если вам непонятно, что я делал, попытайтесь перечитать эту тему с самого начала еще, но более внимательно, и еще, постарайтесь не умничать не в тему.
Renat: Да, у нас switch с прямым прыжком по таблице, если есть достаточное количество элементов, как в примерах.
Только там в примерах взят простейший вариант, когда значения ключей идут с единичным шагом, поэтому просто вычисляется смещение. Но если допустим имеем такой вариант:
case10: ...
case100: ...
case1000: ...
case1000000: ...
Тут, как я понимаю, индекс определяется через бинарный поиск. У вас заложено оба этих способа?
... подразумевается, что это дело должно работать очень быстро, так как нет никаких вызовов if или switch для изменения работы программы, только один раз при инициализации выбрали нужный класс - потомок, дальше все работает прямо и просто.
...
...
В зыках с "настоящими" указателями такого эффекта не будет, там switch будет проигрывать - тем больше, чем больше список выборов.
...
Зачем мне понимать механизмы компиляции? Только для того, чтобы уверовать, что плохой резлультат лучше хорошего? Имеет значение результат.
Странное утверждение. Вы пытаетесь решить оптимизационные задачи уровня компилятора и при этом не знаете как он устроен.
Ребята, курите документацию по switch. Хороший switch - это коммутируемый переход, чья производительность не зависит от количества вариантов выбора. 1 вариант, 100 или 1000 - скорость его перехода будет постоянной.
я в программировании близок к нулю и знаю что ООП больше сделан для удобства нежели для скорости. И правда - ООП удобная штука, если уметь ею пользоваться.
Метаквотсам же лучше уделить время некорректному спреду в тестере. Толку писать на нем экспертов если протестить адекватно их нельзя. Большей частью это относится к торговле на FORTS.
я в программировании близок к нулю и знаю что ООП больше сделан для удобства нежели для скорости. И правда - ООП удобная штука, если уметь ею пользоваться.
Метаквотсам же лучше уделить время некорректному спреду в тестере. Толку писать на нем экспертов если протестить адекватно их нельзя. Большей частью это относится к торговле на FORTS.
Более подробное объяснение (доказательства) уже приводили где-то ?
Здесь принято доказательством свои заявления подкреплять, иначе даже смотреть на станут. ;)
А вообще пример топикстартера показывает что инлайнинг есть. Без него, в режиме отладки, результаты меняются местами, и ООП работает быстрее:
Данная картинка нам намекает, что не тем товарищи заняты и ищут черную кошку в темной комнате.
...
А вот виртуальный метод вырезать нельзя - он вызывается всегда. В результате в одном случае просто крутится цикл, а в другом в цикле вызов.
...
Кстати пустые циклы можно тоже удалять. Код:
Можно свести к простому:
Доказательства будут с другой стороны. Или опять только слова.
По большому счету интересует только факты.
Хотя я и так знаю что ООП работает медленнее, но предоставляет вполне конкретные удобства
Странное утверждение. Вы пытаетесь решить оптимизационные задачи уровня компилятора и при этом не знаете как он устроен.
Да, у нас switch с прямым прыжком по таблице, если есть достаточное количество элементов, как в примерах.
Только там в примерах взят простейший вариант, когда значения ключей идут с единичным шагом, поэтому просто вычисляется смещение. Но если допустим имеем такой вариант:
Тут, как я понимаю, индекс определяется через бинарный поиск. У вас заложено оба этих способа?