Dmitry
окамл старый
Dmitry
ну мы тут и так забыли это всё
Dmitry
у нас тут другие прблемы - то ленивость, то ленивость
Alexander
я не вижу причин почему он позволит забыть сишечку industry wide
Dmitry
то gc
Dmitry
окамл в убунте старый
Кабачок
А что за пост, все тот же гист?
Dmitry
да
Dmitry
там в коменты можно и код, и замечания/предложения
Kir
https://stackoverflow.com/questions/6964392/speed-comparison-with-project-euler-c-vs-python-vs-erlang-vs-haskell интересный пост , старый правда. в комментах каждый там свой язык разгонял, познавательно
Dmitry
тут в чате уже через час флуда бесполезно что-то искать
Кабачок
Я бы предложил на хабру написать по мотивам, но, боюсь, это вызовет новый поток версий.
Dmitry
dmz@zen ~/tmp/bsfuck $ /home/dmz/.nix-profile/bin/ocamlopt -version
4.03.0
dmz@zen ~/tmp/bsfuck $ /home/dmz/.nix-profile/bin/ocamlopt -unsafe -o zinid ./zinid.ml
File "./zinid.ml", line 9, characters 12-32:
Error: Unbound value String.split_on_char
Dmitry
с окамлом тут я сдаюсь
Dmitry
если даже в никсе старье, то ой
Kir
Dmitry
это про здесь или про там?
Alexander
там
Dmitry
про там как всегда самая тупая версия на хаскеле наверное выжрала всю память и упала
Dmitry
точнее, НЕ упала что хуже
Dmitry
потому что упала нода, где оно работало.
Dmitry
но тоже не сразу.
Dmitry
про здесь у меня второй вариант работал достат. хорошо.
Andrei
Kirill
Надо попробовать на гигабайтах входных данных прогнать, тогда можно будет сравнить с жвм языками
Dmitry
мне надо его как-то включить, что ли
Dmitry
он выключен по умолчанию на десктопе
Dmitry
@saksmt на гигабайтах и сишка сейчас загрустит
Dmitry
с реаллоками
Kirill
Так да
Dmitry
там нужна версия со списками
Aragaer
условия такие, что входные данные надо полностью всосать куда-то внутрь
Dmitry
у меня она вроде уже есть, но как я говорил - ДАНУНАХЕР. хватит уже
Dmitry
задача слишком тупая, что бы так упарываться, в самом деле, сколько можно то
Kirill
В том и суть - исходная задача же вроде как для большого числа входных данных позиционировалась
Aragaer
реаллоки в си версии вроде нужны только на этапе всасывания и раздербанивания, непосредственно генерация результата работает уже без использования дополнительной памяти
Dmitry
для большого числа выходных
Kirill
Dmitry
для бесконечного потока входных данных - рано или поздно сдохнет всё
Dmitry
потому что хранить надо всё
Dmitry
т.е получается, что в данной задаче - все языки покажут сильно разные результаты в зависимости от размера входа
Кабачок
Мне кажется вы уже проделали офигенную работу, сишка победила -- справедливость восстановлена.
Dmitry
на хаскеле просто это особенно ярко всегда проявляется
Dmitry
и быстро
Alexander
для бесконечного списка данных мы только с первым словом данные выводить можно
Dmitry
и одно дело оптимизировать, что бы быстро работало на небольших входных данных
Dmitry
а другое дело - что бы на БОЛЬШИХ
Aragaer
ну если уж совсем припрет, можно скидывать на диск и поднимать по частям. Но это будет сразу капец скорости. Зато плюс пинок в сторону распараллелливния
Dmitry
потому, что когда будут действительно БОЛЬШИЕ, тут надо будет писать БД
Dmitry
ну или мап-редьюс
Alexander
там ещё просили не особо жрать проц
Dmitry
кстати, тут можно уже будет поржать, потому что сделать map-reduce из говна и палок на транзиенте - будет быстро
Alexander
т.е. распараллеливание это минус
Dmitry
ну когда данных МНОГО
Dmitry
и хранить надо ВСЕ
Aragaer
миллион строк входных данных это чот очень много выходных
Dmitry
а входной поток почти бесконечен
Dmitry
то тут только сначала сохранить на кластере
Dmitry
причем ноды и S3 на лету заказывать на амазоне
Dmitry
а потом выводить паросочетания )
Alexander
=)
Кабачок
Кстати, сейчас все программы по факту однопоточные?
Alexander
@greenest_pig да
Kirill
Распределённая числодробилка это пожалуй весело
Dmitry
тут нечего параллелить
Aragaer
да
Alexander
ну есть чего поидее
Dmitry
@qnikst тормозит вывод
Dmitry
как ты будешь параллельно заполнять буфер?
Dmitry
ну или каждый поток заполняет свой, а потом они последовательно выводятся? ну фиг знает
Alexander
N буфферов и writev
Dmitry
учитывая, что размер буфера не сильно влияет вообще на скорость
Dmitry
ну, да.
Dmitry
но это я пас
Alexander
правда черт знает как себя writev будет вести
Aragaer
тут можно параллелить - каждый процесс берет себе часть префиксов и знает с каким оффсетом его результаты должны лечь в выходной поток. Кидается в файл все например. А потом остается из файла переправить в stdout
Dmitry
если получится сделатьт акую версию на х-ле - которая будет профит приносить - я бы посмотрел