История изменений
Исправление hobbit, (текущая версия) :
Заменяем крутой полиморфизм на тупой свитч - получаем 1.5 ускорения :)
Ну если в примере ничего, кроме свитча/полиморфизма нет, охотно поверю про 1,5 (чего, кстати, полтора? Раза?) А если там есть какая-никакая логика, всё это сразу превратится в экономию на спичках.
И да, это не эксклюзивная особенность C++, в больших проектах на классическом Си не так уж редко делают тот же полиморфизм, руками создавая структуры с указателями на коллбэки. Хотя могли бы и баобабы свитчей выращивать. Не от хорошей жизни, видать. :)
P.S. И разумеется, бывают критичные участки кода, где если нужда припрёт, и свитчей понаставишь, и все операции выделения/освобождения памяти вынесешь в другое место, и не только их. Там — вопросов нет. Но это, как правило, совершенно отдельные проценты кода и не на всех задачах. Преждевременной оптимизацией увлекаться не стоит.
Исправление hobbit, :
Заменяем крутой полиморфизм на тупой свитч - получаем 1.5 ускорения :)
Ну если в примере ничего, кроме свитча/полиморфизма нет, охотно поверю про 1,5 (чего, кстати, полтора? Раза?) А если там есть какая-никакая логика, всё это сразу превратится в экономию на спичках.
И да, это не эксклюзивная особенность C++, в больших проектах на классическом Си не так уж редко делают тот же полиморфизм, руками создавая структуры с указателями на коллбэки. Хотя могли бы и баобабы свитчей выращивать. Не от хорошей жизни, видать. :)
P.S. И разумеется, бывают критичные участки кода, где если нужда припрёт, и свитчей понаставишь, и все операции выделения/освобождения памяти вынесешь в другое место. Там — вопросов нет. Но это, как правило, совершенно отдельные проценты кода и не на всех задачах. Преждевременной оптимизацией увлекаться не стоит.
Исправление hobbit, :
Заменяем крутой полиморфизм на тупой свитч - получаем 1.5 ускорения :)
Ну если в примере ничего, кроме свитча/полиморфизма нет, охотно поверю про 1,5 (чего, кстати, полтора? Раза?) А если там есть какая-никакая логика, всё это сразу превратится в экономию на спичках.
И да, это не эксклюзивная особенность C++, в больших проектах на классическом Си не так уж редко делают тот же полиморфизм, руками создавая структуры с указателями на коллбэки. Хотя могли бы и баобабы свитчей выращивать. Не от хорошей жизни, видать. :)
P.S. И да, бывают критичные участки кода, где если нужда припрёт, и свитчей понаставишь, и все операции выделения/освобождения памяти вынесешь в другое место. Там — вопросов нет. Но это, как правило, совершенно отдельные проценты кода и не на всех задачах. Преждевременной оптимизацией увлекаться не стоит.
Исходная версия hobbit, :
Заменяем крутой полиморфизм на тупой свитч - получаем 1.5 ускорения :)
Ну если в примере ничего, кроме свитча/полиморфизма нет, охотно поверю про 1,5 (чего, кстати, полтора? Раза?) А если там есть какая-никакая логика, всё это сразу превратится в экономию на спичках.
И да, это не эксклюзивная особенность C++, в больших проектах на классическом Си не так уж редко делают тот же полиморфизм, руками создавая структуры с указателями на коллбэки. Хотя могли бы и баобабы свитчей выращивать. Не от хорошей жизни, видать. :)