metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-12-14 02:44 pm

Пределы роста

Исходник на хаскеле, 2.8 мега, 6000 строк, экспорт из базы данных. GHC при компиляции падает с переполнением стека.

PS: Собралось:

D:\Programm\Haskell\ghc-6.10.2\bin\ghc.exe --make -o test2.exe "test2.hs" +RTS -K100000000
В процессе сожрало 1.5 гигабайта памяти :)

Екзешник получился 43 мегабайта. Отрабатывает сортировку списка и вывод проекции из него достаточно быстро.
Теперь мне пришло в голову, что можно сделать экспорт в более гуманный формат (CSV или вообще бинарный), а из метаданных, которые живут в базе, сгенерить его читалку, тогда компилироваться будет быстро, и можно будет проверить на больших объемах данных.

[identity profile] dmzlj.livejournal.com 2009-12-14 12:51 pm (UTC)(link)
Ага, сказали суровые сибирские мужики.

[identity profile] kiryl.livejournal.com 2009-12-14 12:52 pm (UTC)(link)
Софт вообще дерьмо.

[identity profile] zelanton.livejournal.com 2009-12-14 01:26 pm (UTC)(link)
ололо
http://lurkmore.ru/Haskell

[identity profile] potan.livejournal.com 2009-12-14 01:48 pm (UTC)(link)
Без оптимизации?

[identity profile] migmit.vox.com (from livejournal.com) 2009-12-14 02:30 pm (UTC)(link)
Сделай доброе дело, добавь тикет.

[identity profile] vromanov.livejournal.com 2009-12-14 02:31 pm (UTC)(link)
нафиг-нафиг.. Еще и с такими глюками бороться...

[identity profile] clayrat.livejournal.com 2009-12-14 02:51 pm (UTC)(link)
я ж грил надо было в commonlisp гнать =D

[identity profile] potan.livejournal.com 2009-12-14 03:25 pm (UTC)(link)
Теперь то же самое с -O3 :-)

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

[identity profile] thedeemon.livejournal.com 2009-12-14 04:55 pm (UTC)(link)
>В процессе сожрало 1.5 гигабайта памяти :)

А вот это уже характерно. Когда лучшая программа на Хаскелле (которую всегда называют при просьбе показать большой проект) ест столько памяти на небольшом и довольно безобидном инпуте. Real World Haskell как он есть.

[identity profile] thedeemon.livejournal.com 2009-12-15 02:19 am (UTC)(link)
Сейчас для сравнения сгенерил исходник с 6000 туплами по 27 элементов (инты, флоаты и строки) и скормил его Окамлу.
Компиляция в байткод заняла 3 секунды и 32 мега памяти.
Компиляция в нативный код заняла 19 секунд, из которых секунды 3 работал окамл, а все остальное время - масм. Памяти съел 37 мегов.
Значит, проблема не Хиндли-Милнере.