История изменений
Исправление uin, (текущая версия) :
А как выглядит типичный код интерпретатора?
while((command = get_next()).code != STOP)
implementations[command.code](command);
Такой код и не предполагает оптимизации. Тут значения и вызовы непредсказуемые, любой процессор на таком коде будет больше простаивать, но интерпритаторы и не обещают быстроту.
Если же ты думаешь что бранчпредиктор может как то заранее угадать адрес функции значение для которой еще не получено, то у меня для тебя плохие новости.
Исходная версия uin, :
А как выглядит типичный код интерпретатора?
while((command = get_next()).code != STOP)
implementations[command.code](command);
Такой код и не предполагает оптимизации. Тут значения и вызовы непредсказуемые, любой процессор на таком коде будет больше простаивать, но интерпритаторы и не обещают быстроту.
Если же ты думаешь что бранчпредиктор может как то заранее угадать адрес функции значение для которой еще не получено, то у меня для тебя плохие новости.