LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Это не динамическая диспетчеризация, а говно на палочке. Где-то на гитхабе лежал стёбный калькулятор, который «складывает» числа при помощи блоков if (a == константа && b == константа) c = константа;

Вот это решение из той же оперы.

гораздо эффективнее

Только в нашем примере «говна на палках», чтобы он был реалистичным, веток case должно быть не три, а штук тридцать. А эффективный case на большинстве архитектур реализуется при помощи… перехода по вычислимому адресу.

Круг замкнулся.

https://godbolt.org/z/q8hTnEWox

https://godbolt.org/z/oj4TqWYxT

https://godbolt.org/z/xccbaM4TE

Исходная версия wandrien, :

Это не динамическая диспетчеризация, а говно на палочке. Где-то на гитхабе лежал стёбный калькулятор, который «складывает» числа при помощи блоков if (a == константа && b == константа) c = константа;

Вот это решение из той же оперы.

гораздо эффективнее

Только в нашем примере «говна на палках», чтобы он был реалистичным, веток case должно быть не три, штук тридцать. А эффективный case на большинстве архитектур реализуется при помощи… перехода по вычислимому адресу.

Круг замкнулся.

https://godbolt.org/z/q8hTnEWox

https://godbolt.org/z/oj4TqWYxT

https://godbolt.org/z/xccbaM4TE