Ilya
@anarchostatist ну а что, с хардкодами кто угодно напишет
Следующий шаг: захардкодить весь input в код
Leonid 🦇
Совсем одичали?
Ilya
Следующий: вычислить output на шаблонах
Ilya
Будет 0.000s
Alexander
@lonokhov ну просто иначе haskell не обогнать
Alexander
у voidlizard все ещё haskell в лидерах и лучшие проги на си отстают
Dmitry
@lonokhov ну, для начала тут печалька была, что наш уютненький сливает любому языку если на нём просто без затей писать
Dmitry
а оно вон оно как повернулось
Dmitry
поучительно
Anonymous
Следующий шаг: захардкодить весь input в код
а че , можно запилить плагин для компилятора
eahqzsr
https://pastebin.com/6Q3iJMSJ
Anonymous
который сразу в бинарник результат отправит
Alexander
на TH можно без проблем
Alexander
@voidlizard щас попробую как у тебя запилить
Leonid 🦇
Корректно работающие пороги бесконечно быстрее некорректных. Особенно конкурентные
Dmitry
на таком инпуте компилятор умрет
Anonymous
ТН это дичь
Dmitry
он на 25% от него умрет
Dmitry
и с шаблонами, и с TH
Anonymous
я про раст
eahqzsr
Сделал генератор входных данных, на этот раз префиксы-суффиксы от 1 до 9 символов.
Ilya
на таком инпуте компилятор умрет
Это смотря как конпилятор написать
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