воскресенье, 11 сентября 2011 г.

Lispworks vs SBCL

В пятницу поспорил с начальником по поводу степени оптимизированности кода, выдаваемого лиспворксом. Я упирал на то, что SBCL выдаёт в 2-3 раза более короткий код и использует больше "продвинутых" машинных инструкций и приёмов.

Перевёл глубоко оптимизированный исходник в вид, который SBCL съест, откомпилировал, запустил, и получил всего-то в полтора раза лучший результат. Немного пришлось попыхтеть, т.к. ошибки SBCL часто выдаёт в виде, совсем нетривиальном для понимания, а такого мощного дебаггера, как в LW, в нём нет. Поэтому чисто интуитивно нашёл, что ему не нравится.

Задача, кстати, была: считать небольшой (100мб) pcap-файл, отфильтровать "плохие" фреймы и записать их в другой файл. Использовалась libpcap через лисповский plokami. Ещё раз подтвердился тезис, что не имеет смысла заниматься супероптимизацией кода, ограниченного медленным вводом-выводом, или работающего по сравнительно редким событиям.

1 комментарий:

Архив блога