У меня есть две новости - одна хорошая, вторая - плохая

29 июнь, 2007 - 12:31Андрей Зубинский

Начнём с хорошей. Настоящий подарок всем любителям Forth - наконец-то в свободном доступе полные варианты культовых книг Лео Броуди Starting Forth и Thinking Forth!

Thinking Forth давным-давно выходила в русском переводе, но малым тиражом и быстро стала редкостью. Мне досталась в каком-то букинисте в те времена, когда доллар стоил под 200 тысяч купонокарбованцев - без обложки, разодранная, с частично отсутствующими страницами.

А теперь - вторая новость. Она тоже из мира Forth, но выходит далеко-далеко за его границы.

Дело в том, что фортеры любят делать то, чего не любят все остальные - копошиться на низком, машинном уровне. Ну, специфика системы Forth такая - тут ничего не поделаешь.

Вот и Антон Эртл (Anton Ertl), разработчик Gforth (GNU Forth), повозился с разными  версиями компилятора gcc (двумя релизами ветки 2.95 и  4.1) и продемонстрировал малоприятное:

"Снижение быстродействия сгенерированного кода gcc-4.1 обусловлено плохой алгоритмикой назначения регистров (registers allocation) и ошибочным механизмом замены при простом  присваивании (copy propagation)".

Иными словами, - там, где gcc 2.95.1 генерировал код, весьма близкий к оптимальному, gcc 4.1 творит просто какое-то непотребство, другими словами не скажешь. Да вы сами взгляните на ассемблерные листинги - там всё понятно без слов.

Нехорошо это. Ой как нехорошо.