Мемуары

May 19, 2011 20:55

Наткнулся в инете на некий материал на мерзком хабрахабре, с которым я, тем не менее, согласен.

Внизу там обнаружился следующий комментарий:
... Реализация какой-то (лент искать) задачи на CL порадовала. Алгоритм был реализован точно, но предварительно генерировался высокопроизводительный машинный код в зависимости от конкретных входных параметров. :3 Работала за 0.7 времени gcc, при том что время компиляции включалось в рантайм, в отличие от gcc. Помечена альтернативной. В других случаях алгоритм вообще слабо напоминает официальный - альтернативным не помечается.

Собственно, речь там идет о моем варианте решения задачи о блинчиках, который я некогда с торжеством преподнес в своем блоге. Я в то время решил с энтузиазмом взяться за шутаут и подтянуть там SBCL на топовые позиции.

К сожалению, энтузиазм у меня быстро угас, когда сначала сняли мой fannkuch-redux, а затем не приняли мою версию mandelbrot.

В первом случае история была такая: пришел автор жабьего варианта и засабмитил "аналог" моего решения, только на жабе. Разумеется, никакого DSL там не было -- все циклы он нарисовал и раскрыл руками, причем только вплоть до некоторого предела (вроде бы до N=12). Коментарий к решению был примерно следующий: "Я не против, если это решение уйдет в альтернативные, но, блядь, в лиспе-то щас то же самое ведь!".

На это прибегает админ shootout и пишет мне: "Это че, правда?". Я типа: "Нет, конечно. Я ничего не делаю руками, да и, вообще, мое решение может посчитать N=13 и дальше, в отличие от жабьего.". Админ ничего не понял и переспросил: "Кто циклы-то расклеивает, ты или компилятор?". Я такой: "Компилятор ессно, там же макрос! Ты глазами листинги сравни.". Тем не менее, через день мое решение было снято и перенесено в альтернативные варианты.

Ну ладно, я здесь даже попытался понять админа -- типа того, что решение обязательно должно реализовывать честный цикл. Хотя все равно неясно, почему, когда компилятор gcc его оптимизирует анроллом, то это нормально, а когда это же самое делает мини-компилятор моего собственного DSL -- это типа нарушение правил?

Тем не менее, мое терпение лопнуло, когда админ забраковал мой mandelbrot из-за того, что я там воспользовался псевдо-ассемблером SBCL (vop-ами) для доступа к SSE. Ну еб вашу мать -- у вас же рядом в рейтинге лидирует сишная версия, которая делает то же самое, только специальными конструкциями GCC?!

Короче, в итоге я просто тупо плюнул и забил на это дело вообще. Куда-то бежать бычить я не стал, потому что позиция админа предельно ясна и симпатична мне: "Не нравится -- сделай свой бенчмарк-портал со своим блэкджеком".

Вот как-то так все было :)

code, java, results, shootout, common lisp, mandelbrot, fannkuch-redux, lisp, fannkuch, fail

Previous post Next post
Up