Пределы роста
Dec. 14th, 2009 02:44 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Исходник на хаскеле, 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 или вообще бинарный), а из метаданных, которые живут в базе, сгенерить его читалку, тогда компилироваться будет быстро, и можно будет проверить на больших объемах данных.
PS: Собралось:
D:\Programm\Haskell\ghc-6.10.2\bin\ghc.exe --make -o test2.exe "test2.hs" +RTS -K100000000
В процессе сожрало 1.5 гигабайта памяти :)
Екзешник получился 43 мегабайта. Отрабатывает сортировку списка и вывод проекции из него достаточно быстро.
Теперь мне пришло в голову, что можно сделать экспорт в более гуманный формат (CSV или вообще бинарный), а из метаданных, которые живут в базе, сгенерить его читалку, тогда компилироваться будет быстро, и можно будет проверить на больших объемах данных.
no subject
Date: 2009-12-14 12:51 pm (UTC)no subject
Date: 2009-12-14 01:05 pm (UTC)Впрочем, лично для меня это не звучит приговором: даже если инструмент можно использовать только для небольших проектов - это не повод отказаться от него совсем... В большом проекте могут оказаться части, которые удобно выделить и применить данный инструмент.
no subject
Date: 2009-12-14 01:07 pm (UTC)no subject
Date: 2009-12-14 01:17 pm (UTC)no subject
Date: 2009-12-14 01:23 pm (UTC)no subject
Date: 2009-12-14 01:24 pm (UTC)no subject
Date: 2009-12-14 08:48 pm (UTC)no subject
Date: 2009-12-14 01:24 pm (UTC)no subject
Date: 2009-12-14 01:51 pm (UTC)no subject
Date: 2009-12-14 01:55 pm (UTC)GHC очень не любит дельфи, а дух его
обязательно просочился при экспорте.
(Там с самого начала было написано,
что это экспорт из базы, и я этого не заметил,
или ты сейчас это дописал?)
no subject
Date: 2009-12-14 02:10 pm (UTC)А вообще да, использовать дельфи совместно с GHC это такое междурасовое скрещивание, что ощущаешь себя доктором менгеле в командировке в отряде 731.
no subject
Date: 2009-12-14 02:19 pm (UTC)Вот блин, одну строчку прочитать не могу, устал, что-ли...
> дельфи совместно с GHC
Если на уровне генерации кода, то не страшно.
А вот с FFI, это, думается, дааа %)
no subject
Date: 2009-12-14 02:29 pm (UTC)Сильно хотелось бы сложные типы данных передавать между дельфи и GHC, но чувствую, что проще будет в дельфи сериализовать, в хаскеле парсить. Вплоть до использования protobuf.
no subject
Date: 2009-12-14 02:34 pm (UTC)В смысле, проще, чем FFI? Уверен, что проще.
no subject
Date: 2009-12-14 01:10 pm (UTC)no subject
Date: 2009-12-14 12:52 pm (UTC)no subject
Date: 2009-12-14 01:26 pm (UTC)http://lurkmore.ru/Haskell
no subject
Date: 2009-12-14 01:52 pm (UTC)Вот, примерно так и есть. :)
no subject
Date: 2009-12-14 01:48 pm (UTC)no subject
Date: 2009-12-14 01:51 pm (UTC)no subject
Date: 2009-12-14 02:34 pm (UTC)no subject
Date: 2009-12-14 02:48 pm (UTC)no subject
Date: 2009-12-14 02:30 pm (UTC)no subject
Date: 2009-12-14 02:32 pm (UTC)no subject
Date: 2009-12-14 02:49 pm (UTC)no subject
Date: 2009-12-14 02:31 pm (UTC)no subject
Date: 2009-12-14 02:51 pm (UTC)no subject
Date: 2009-12-14 02:59 pm (UTC)no subject
Date: 2009-12-14 03:12 pm (UTC)no subject
Date: 2009-12-14 03:25 pm (UTC)А вообще вполне приемлемое решение - выдавать отчет ввиде программы, которая осуществляет по нему навигацию. Ночью компилируется, а днем запускается.
no subject
Date: 2009-12-14 04:44 pm (UTC)no subject
Date: 2009-12-14 04:55 pm (UTC)А вот это уже характерно. Когда лучшая программа на Хаскелле (которую всегда называют при просьбе показать большой проект) ест столько памяти на небольшом и довольно безобидном инпуте. Real World Haskell как он есть.
no subject
Date: 2009-12-14 05:05 pm (UTC)no subject
Date: 2009-12-14 05:09 pm (UTC)no subject
Date: 2009-12-14 05:14 pm (UTC)no subject
Date: 2009-12-14 05:57 pm (UTC)no subject
Date: 2009-12-14 07:35 pm (UTC)no subject
Date: 2009-12-15 03:52 am (UTC)no subject
Date: 2009-12-15 03:51 am (UTC)no subject
Date: 2009-12-14 05:52 pm (UTC)Я вообще проверяю идею "можно ли обрабатывать большие объемы данных хаскелем". Вообще судя по результатам - можно, вот только прикручу еще загрузку данных из внешнего файла, и запилю туда гига два экспорта из базы :)
no subject
Date: 2009-12-14 05:53 pm (UTC)no subject
Date: 2009-12-14 05:56 pm (UTC)no subject
Date: 2009-12-14 11:20 pm (UTC)Можно и строчку придумать, которая будет там выдавать какой-нибудь тапл в миллион полей и ghc на такой строчке тоже сломается.
no subject
Date: 2009-12-15 12:52 am (UTC)no subject
Date: 2009-12-15 12:57 pm (UTC)no subject
Date: 2009-12-15 01:35 pm (UTC)no subject
Date: 2009-12-15 02:11 pm (UTC)no subject
Date: 2009-12-15 02:19 am (UTC)Компиляция в байткод заняла 3 секунды и 32 мега памяти.
Компиляция в нативный код заняла 19 секунд, из которых секунды 3 работал окамл, а все остальное время - масм. Памяти съел 37 мегов.
Значит, проблема не Хиндли-Милнере.