История изменений
Исправление alysnix, (текущая версия) :
дешевле. Матч делает для малого количества веток переходы, для большого сам переходы собирает в таблицу.
не дешевле. при выборе в таблице ты получаешь адрес фунции выражением вида
lfun = *(&table + y * max_tag + x)
безо всяких джампов вообще. ну просто нереально сделать быстрей. а если max_tag известен заранее, там вообще одна асмовая команда получается. за счет моды адресации base[reg1*const + reg2].
Исходная версия alysnix, :
дешевле. Матч делает для малого количества веток переходы, для большого сам переходы собирает в таблицу.
не дешевле. при выборе в таблице ты получаешь адрес фунции выражением вида lfun = (&table + ymax_tag + x) безо всяких джампов вообще. ну просто нереально сделать быстрей. а если max_tag известен заранее, там вообще одна асмовая команда получается. за счет моды адресации base[reg1*const + reg2].