Ilya
Leonid 🦇
Совсем одичали?
Ilya
Следующий: вычислить output на шаблонах
Ilya
Будет 0.000s
Alexander
@lonokhov ну просто иначе haskell не обогнать
Alexander
у voidlizard все ещё haskell в лидерах и лучшие проги на си отстают
Dmitry
@lonokhov ну, для начала тут печалька была, что наш уютненький сливает любому языку если на нём просто без затей писать
Dmitry
а оно вон оно как повернулось
Dmitry
поучительно
eahqzsr
https://pastebin.com/6Q3iJMSJ
Anonymous
который сразу в бинарник результат отправит
Alexander
на TH можно без проблем
Alexander
@voidlizard щас попробую как у тебя запилить
Leonid 🦇
Корректно работающие пороги бесконечно быстрее некорректных. Особенно конкурентные
Dmitry
на таком инпуте компилятор умрет
Anonymous
ТН это дичь
Dmitry
он на 25% от него умрет
Dmitry
и с шаблонами, и с TH
Anonymous
я про раст
eahqzsr
Сделал генератор входных данных, на этот раз префиксы-суффиксы от 1 до 9 символов.
Ilya
So meta
eahqzsr
в командной строке парамет - сколько строк генерировать.
Dmitry
ну, да. в bsfuck-c используются шматки парсера недолиспа
eahqzsr
Быстрые реализации можно гонять на списках большего размера.
Dmitry
@eahqzsr проверять сложнее будет
Dmitry
но вообще интересно может выйти, если токены станут по 4096 и больше
eahqzsr
Ну отборочный круг, потом финал.
Aragaer
$ time ./prog <in.txt >/dev/null
Got 129998 bytes
real 0m1.218s
user 0m1.212s
sys 0m0.004s
Aragaer
ща md5 сравню еще
Aragaer
... различаются
Aragaer
ага, сбоит пока
分解物質
Dmitry
и по поводу "этого кода на си" - никаких попыток буферизовать вывод и снизить число write не делается
Dmitry
а основное торможение именно в выводе
分解物質
eahqzsr
Но хаскелю по-прежнему нужен фастбилдер?
Dmitry
ну самой быстрой версии - да
Dmitry
у меня есть приемлемая версия, которая работает с обычным билдером
Dmitry
её тоже можно разогнать как @qnikst делает
Dmitry
убрать лишние аллокации
分解物質
лол
ну сделаю я ресайзящийся буфер с первоначальным размером 120000
время останется, размер не захардкожен)
Dmitry
ну сделай, только размеры токенов не хардкодить и их число - будет ок
eahqzsr
В общем тк я это затеял, мне и собирать - можете в личку кидать ссылки на свои варианты, я их завтра сведу и прогоню.
分解物質
Anonymous
ну слов
Dmitry
префиксы, суффиксы
Anonymous
через е пишется
Dmitry
которые пробелами разделяются
分解物質
вы серьёзно уверены что код на хаскеле будет быстрее?
Dmitry
чем что?
分解物質
чем мой на C
Dmitry
ну давай твой код
Alexander
на си можно написать быстрее, это мне кажется достаточно очевидное утверждение
Alexander
не
Aragaer
во, наконец результат совпадает 8)
分解物質
Alexander
все что надо строка, в ней 2 слова, разделены 1 пробелом
Alexander
в конце \r или \r\n
Alexander
все, больше ничего не дано, и предположений делать нельзя
Aragaer
https://gist.github.com/aragaer/43300249f0c4ec4f175361d753001efe
Alexander
вход на stdin выход на stdout
Danila Matveev
дайте еще хэш эталонный, для сверки
Alexander
@voidlizard у меня с таким подходом как у тебя медленнее
Aragaer
теперь должно выдавать результат, который соответствует питоновскому. Работает за 1.2 секунды на моей машине
Alexander
eb8d32c8d260d240b351dfadd42cb5e5
Dmitry
@aragaer давай
Dmitry
ну и последние версии сами пришлите топикстартеру, плс?
Aragaer
дв
Aragaer
сходится мд5
Aragaer
последняя версия вон я чуть выше кинул
Dmitry
@aragaer 0m1.554s
Aragaer
половина времени идет непосредственно в коде, еще столько же в memcpy
Aragaer
на третьем месте rawmemchr для перепрыгивания по словам
Dmitry
@aragaer CHUNK что такое?
Alexander
о, новый рекорд?
Aragaer
размер блока записи
Dmitry
ok