LINUX.ORG.RU

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

Исправление 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].