Dmitry
А апте есть, может и а никсе есть пакет
Dmitry
Исходник выше по треду
Dmitry
Я на телефоне, не могу выложить
Dmitry
Хотя
Alexander
аншёл
eahqzsr
Их там 2 версии.
eahqzsr
Вторая еще выше по треду.
A64m
у меня вариант без билдера в том же порядке выводит, что и с билдером
Alexander
я нашёл ближайшую
eahqzsr
Ближайшая быстрее.
Alexander
хм..
Alexander
@eahqzsr так нужно слова местами переставлять или нет?
Alexander
питон не переставляет
Alexander
у @voidlizard переставляет
Alexander
у @A64m_qb0 не переставляет, но если переставлять то баг
Dmitry
На скорость не влияет
Alexander
2.65
Alexander
pypy
eahqzsr
Нет, переставлять не нужно. Но если это единственная проблема, то я переживу, поменяв парсиг-часть.
Dmitry
Аааа
Alexander
ну влияет, но не сильно
Alexander
ещё в 2 раза ускорять
Alexander
без хаков:/
A64m
я в полтора раза фастбилдером ускорил
A64m
или посдедние замеры уже и так у всех с фастбилдером?
Alexander
нет
A64m
если что, то пропадание у меня с фастбилдером воспроизводилось
Alexander
угу, это на завтра задачка будет
Alexander
блин я хотел streaming заюзать а там Prelude на Strings
A64m
есть streaming-bytestring
A64m
но он всегда чуть по тормознее байтстринга вроде
Alexander
там вроде bytestring на что-то меняется адское
Alexander
где потоковость явная
Alexander
так
A64m
лази меняется
Alexander
результаты программ разные
Alexander
угу
Alexander
[qnikst@nixos:~/workspace/myself/experiments/special-1]$ head result.python mygfc5tg3e mygfckwam1 mygfcebk5k mygfcfiyee mygfcy4r2w mygfcugdg5
A64m
ну как у меня
Alexander
да
Alexander
[qnikst@nixos:~/workspace/myself/experiments/special-1]$ head result.me mygfc5tg3e viv3s5tg3e xpa4e5tg3e 3b86a5tg3e nnc3m5tg3e
Alexander
а понял
Alexander
правлю
Alexander
ок, 4.35 результаты совпадают
Alexander
так давайка я свой hPut возьму
Alexander
вспомнить бы где я его положил
A64m
ускорил свой вариант в 1.8 раз
Alexander
о круто
Alexander
только builder?
A64m
import qualified Data.ByteString.Char8 as S import qualified Data.ByteString.Lazy.Char8 as B import qualified Data.ByteString.FastBuilder as Builder import Data.Foldable (fold) import Data.Monoid ((<>)) main :: IO () main = B.interact processAll processAll = Builder.toLazyByteString . Builder.rebuild . fold . process . unzip . map toPairs . B.lines process (l1, l2) = [lb e1 <> lb e2 <> Builder.char8 '\n' | e1 <- l1, e2 <- l2] lb = Builder.byteString toPairs line = (el1, S.tail el2) where (el1, el2) = S.break (== ' ') . B.toStrict $ line
A64m
нет, это fast-builder
A64m
но собирание из строгих строк, по идее, должно и обычный ускорить
Alexander
угу
Alexander
4.55 стал
Alexander
на обычном билдере
Alexander
чего-то у меня мой writer работает хуже стандартного
Alexander
хотя поидее отличается только тем что 1 раз вместо n лок на handle берёт
Alexander
о, вернул справедливость
Alexander
File system inputs: 0 File system outputs: 0 Socket messages sent: 0
Alexander
в haskell
Alexander
в питоне:
Alexander
Swaps: 0 File system inputs: 0 File system outputs: 2148440
Alexander
что бы это могло значить?
Alexander
питон делает кучу write(1, "тут 4 строки")
Alexander
блин по 4 точно спать пора..
Alexander
по 110000
Alexander
haskell по 32768 + poll
Alexander
ещё и запись пустой строки на каждый чих
Alexander
write(1, "", 0) = 0 poll([{fd=1, events=POLLOUT}], 1, 0) = 1 ([{fd=1, revents=POLLOUT}]) write(1, "ijj5tryfp5\r\nijj5tr61x8\r\nijj5tz4y"..., 32752) = 32752 poll([{fd=1, events=POLLOUT}], 1, 0) = 1 ([{fd=1, revents=POLLOUT}]) write(1, "", 0) = 0
Alexander
с похожими настройками 4.06 у @A64m_qb0 вариант
Alexander
3.24 вариант @voidlizard + builder
Dmitry
Это с твоим врайтером?
Alexander
нет, мой врайтер оказался говном
Alexander
не знаю почему
Dmitry
И всё, дно?
Alexander
это с буффером 110000 вместо 32768
Alexander
ну сейчас 3.24 vs 2.2
Alexander
я хочу сделать адский хак и убедить rts быть с IO попроще
Alexander
сейчас haskell делает + poll + write на каждый write
Alexander
питон не делает