Вы НЕ должны выбрасывать квалификатор const
. Любая попытка впоследствии изменить значение, которое было квалифицировано const
, вызывает Неопределенное поведение . См. Стандарт C11 - 6.7.3 Классификаторы типов (p6) .
Параметр table_lookup
соответствует const
по определенной причине. Это позволяет компилятору оптимизировать использование t
. Если вы отбрасываете const
и пытаетесь изменить t
, вы нарушаете свое обещание компилятору, что t
не будет изменено.
Вместо этого вы должны реорганизовать свой код, чтобы функция remove()
вызывала внутри него table_lookup
, чтобы получить указатель (предположительно) на узел, который вы хотите удалить. Затем удалите node
. Не пытайтесь добавить remove()
в table_lookup
. Создайте новую функцию.
Я работал на крупного производителя беспроводных телефонов. Наша команда портировала J2ME на телефоны на базе ARM. У нас было 2 парня, которые работали над использованием Jazelle; нет ОС, только на сыром кремнии ARM9. К сожалению, он остался в исследовании, потому что JIT получил необходимую нам производительность без необходимости платить лицензионные сборы за Jazelle.
Если вы принимаете эмпирическое правило, что запуск Hotspot JVM без JIT выполняется на 1/10 от скомпилированного C. Затем JIT возвращает 50% того, что вы потеряли, а Jazelle возвращает 60% того, что вы потеряли. Это очень грубые оценки. Все зависит от того, какой код выполняется. У Jazelle была чуть лучшая производительность для наших тестовых случаев, потому что он обрабатывал больше ситуаций, чем JIT. Принимая во внимание, что JIT был скомпилирован-C-fast в нескольких случаях.
Предыдущий плакат, кажется, неправильно понимает Джазель. Jazelle вызывает ловушечное действие для байт-кода Java. Пользователь должен предоставить фрагменты кода для обработки каждого байт-кода. Без таких фрагментов и таблицы поиска вы получите невыполненное исключение.