...
некий идиот про Хаскель пишет. Идиот потому, что принимает желчное брюзжание Харпера за доброжелательную критику. И потому, что считает, что ленивые вычисления могут создать проблему
в проекте с участием нескольких людей.
Сим прошу редакцию PCWeek унять этого идиота.
Меня не послушают, но не высказаться не мог.
Comments 14
(C.do_curl_ $!) ....
Reply
Reply
строка 69, если убрать конструкцию с $! - то работать нифига не будет, что неочевидно ни разу
Reply
Reply
А про "дни и дни на тюнинг" ленивых вычислений уже давно неправда. В ghc 7.4, программа в режиме профилирования почти не тормозит. Врубив heap profiling и написав простенький скрипт можно смотреть расход памяти прямо в процессе работы программы. Я, посмотрев на выхлоп, достаточно быстро сообразил, что не форсируется Map-ка, при удалении из нее элементов "(368150)bin/delete.go..." и кушается память в dns-кеше "(6747)resolveA...". Причем последнее навело меня на мысль "ооо, там же bytestring вместо text, вот она откуда фрагментация памяти появилась"
Так что утечки ловить достаточно просто, ибо есть для этого инструмент.
Кстати, фрагментация памяти очень сильно просаживает производительность, так что не стоит применять bytestring-и для долгоживущих данных (особенно если они выделяются не одним махом, а по чуть-чуть, в разных кусках памяти, как было у меня с dns-кешем).
Reply
Фрагментация тормозит программу в десять раз, даже чуть больше, недавно убедился. ;)
Reply
а почему text не способствует фрагментации?
мне казалось что они одинаково внутри устроены.
сейчас вот заглянул в исходники, первое что бросилось в глаза: в байтстроке ForeignPtr, а в тексе Array.
т.е. сборка мусора спасает.
так?
Reply
Reply
Reply
(The comment has been removed)
Буду я ещё в сортах журналистов разбираться. ;)
Reply
Leave a comment