Alexander
@voidlizard я могу попытаться убрать и pollout
Alexander
но точно не знаю как
Dmitry
А толку
Dmitry
Неидиоматично аж ппц
Alexander
почему?
Alexander
вызывать LBS.hPutStr идеоматично?
Alexander
Extra.hPutStr делает тоже самое только чуть-чуть адекватнее
Alexander
если бы из base побольше бы хорошего экспортировали то и занимало бы 3 строки
Alexander
мне вообще оно нужно было чтобы hPutStr для ленивых строк атомарным был
Alexander
и не прервался другой записью
Alexander
а там было LBS.foldChunks B.hPutStrLn (pure ())
Alexander
что очевидно не катит, т.к. на каждый чанк берётся лок на хэндле, проверяется writeable-ность и т.п.
eahqzsr
Странный хаскель - io тормозит, а проц на 100% грузит.
A64m
@anarchostatist
на хаскеле
primes = 2:3:filter isPrime [5,7..] :: [Int]
isPrime x = all (/= 0) . map (rem x) . takeWhile ((<= x) . (^2)) $ primes
main = print . length . takeWhile (<= 2^24) $ primes
Alexander
@eahqzsr как и питон?
Alexander
только там io не тормозит и лишнего не делает
Alexander
вообще у нас есть внутренние либы которые меееееедленно идут в сторону того, чтобы иметь хороший IO
Alexander
т.к. в общем-то ни у кого нету времени и точного понимания того что же хочется
eahqzsr
Как и питон, да. Но все равно оба упираются в проц. Но хаскель раньше. Кстати чистый питон уже медленнее хаскеля, только pypy быстрее.
Alexander
ну хаскель в IO делает в 3 раза больше сисколов
Alexander
вообще кстати в последних версиях 2.63 vs 3.0
Alexander
может уже имеет смысл и ещё что-то кроме io тюнить
eahqzsr
Да не должно оно влиять по идее, 3 сискола или 1 если их несколько сотен/тысяч в секунду всего.
Alexander
ну немного точно влияет
Alexander
ладно, подумаем что ещё можно сделать хорошего
Alexander
@A64m_qb0 вектора (stream.unstream) unzip не умеют?
Alexander
я правильно помню
A64m
не помню
A64m
декартово произведение то точно не делает
A64m
так что с вектором там разве что еще больше тормозов получить
Alexander
кстати мы же храним столбцы?
Alexander
в любом случае правый остается?
A64m
да оба остаются. ну, понятно один из них постепенно уменьшается
Alexander
1.45!
Alexander
интересно я результаты поломал
Alexander
или нет
Alexander
скорее всего поломал
Alexander
нет
Alexander
ЯХУУУ
Alexander
питон порушен!
A64m
это что там такое было?
Alexander
вектора + foldMap
Alexander
щас загружу
Alexander
@eahqzsr забирай вторую ревизию https://gist.github.com/qnikst/a06ebe89274fd56b58372e3f9e37ba76
Alexander
@A64m_qb0 ^
Alexander
оно будет есть память в двух местах:
1. файл читается полностью в строгую байтостроку
2. никто никогда не удаляет использованные строки
Alexander
впрочем питон делает так же
eahqzsr
Проблема что я не могу вкорячить фастбилдер потому что от требует бейз старый. По крайней мере мне так говорит cabal install
Alexander
у меня cabal install и 8.0.2
Alexander
так стоп
Alexander
там fast-builder надо
Alexander
или новый bytestring если билдер брать из него
Alexander
библиотека bytestring-builder древняя перед мержем его в bytestring была
A64m
да сейчас-то и без фастбилдера сносная производительность будет
Alexander
@eahqzsr ^
Alexander
4.19 с обычным 😏
Alexander
щас ещё размер чанка зафигачу
Dmitry
может тормозить сама итерация по префиксам и суффиксам?
Alexander
уже обогнали
Alexander
я не хочу больше ускорять
Dmitry
это бы немного объяснило, почему вектор лучше листа здесь
Dmitry
на один указатель меньше надо преодолеть, чтобы взять следующий суффикс
Alexander
лист говно^W
Alexander
ой, лист очень плохая структура для долгосрочного хранения
A64m
да и вектор забоксенный объектов говно
Alexander
но лучше листа
A64m
но со строками ничего не поделать, конечно
A64m
да и лучше листа не всегда
Alexander
ну вообще-то тут можно
Alexander
у нас же строка вечная
Alexander
можно хранить unboxed отступов
A64m
да
Alexander
но И-ДЕО-МА-ТИ-Ч-НОСТЬ
Dmitry
питонисты засмеют
Alexander
пусть обгонют сначала
Dmitry
вектор байтстрингов еще можно оправдать
Alexander
я честно думал что там не произведение
A64m
надо сделать инстанс анбоксед векторов для строк (но там мутабельность обязательно поддерживать и придется аллокатор писать)
Alexander
и что листы уйдут из памяти
Alexander
кстати мы ж с @lonokhov что-то такое делали?