Маjко
Vladimir
есть ситная версия
Vladimir
оптимальная
Vladimir
может кто кинуть
Anonymous
Dmitry
@A64m_qb0 ну, до конца специальной олимпиады добегут не только лишь все
Маjко
Alexander
@voidlizard сможешь мой или prog.с скинуть?
Dmitry
ща
Маjко
Ща подумаю как это оптимизировать
Dmitry
Alexander
да там меньше харкода, и результат стравним
Alexander
есть чуть более быстрая но она только по пробелу одному умеет
Alexander
но общий смысл тот же, разве ещё массив отступов хранится
Vladimir
Undefined symbols for architecture x86_64:
"_rawmemchr", referenced from:
Alexander
Mac/win?
Маjко
Сишная версия быстрее на 40мс
Маjко
Обидна
Anonymous
а если вместо split_whitespace самому проитерировать, то будет медленнее?
Маjко
Я думаю да
Маjко
Если без ансейфа
Маjко
Можно считать как сишная программа, что пробел — это только ' '
Alexander
есть сишные чуть медленнее с сестрой токенизацией
Маjко
Но это погоды не делает
Alexander
ладно, завтра наверное коллекцию всего соберем
Маjко
Пойду профилировщик запущу
Anonymous
я в своем варианте итерировал по байтам. пробел - в префиксы, перенос - в суффиксы
Маjко
Ну всё таки хочется сохранить читаемость кода.
Можно превратить всё в ансейфную кашу, как в си, которую невозможно читать
Маjко
Но это такое
Anonymous
а никак ещё не победить си
Маjко
Ну такой задачи сейчас и не стоит
Маjко
Хотя хаскелль мы вроде уже обогнали
Dmitry
где?
Anonymous
вррде нет
Маjко
чекните последнюю версию
Маjко
https://github.com/mersinvald/rust-vs-haskell-special-olimpiade
Anonymous
ну он в репу пушит
Dmitry
гляну
Dmitry
нет пока
Dmitry
dmz@zen ~/tmp/bsfuck/rust-vs-haskell-special-olimpiade $ time ./target/release/rust-vs-haskell < ../49zGQ6Zt.txt > /dev/null
real 0m1.950s
user 0m1.624s
sys 0m0.324s
Vladimir
а сколько для сравнения код Ильи и хаскель
Vladimir
нужна таблица
Anonymous
мой 3с
Anonymous
неинтересно
Vladimir
та у тебя тоже вывод больше всего занимает
Маjко
Dmitry
dmz@zen ~/tmp/bsfuck $ time ./v-stream < ./49zGQ6Zt.txt > /dev/null
real 0m1.649s
user 0m1.620s
sys 0m0.028s
Dmitry
алсо осторожнее, если весь выхлоп совать в один буфер, он будет по размеру очень большой
Dmitry
плюсы не выжили в таком варианте,
Dmitry
но тут нормально как в питоне - итерация по префиксу:
Маjко
я сейчас до 20мб сократил буффер
Маjко
И флашу как только он заполняется
Маjко
Ща поиграюсь с разными размерами
Dmitry
а, да
Dmitry
пардон
Dmitry
не увидел
Маjко
Не, это еще на локалхосте
Маjко
Но разницы нифига нет
Маjко
Что с полным буффером что с 1мб
Маjко
1.41
Vladimir
ты изобрел BufWriter
Vladimir
И флашу как только он заполняется
Vladimir
Ща поиграюсь с разными размерами
Маjко
100кб 1.38
Маjко
Vladimir
странно что у тебя буфер так быстро работает
Маjко
Ладн, пойду попараллелю
Маjко
Это же не запрещено?
Dmitry
только хуже будет
Dmitry
затык в IO
Dmitry
тут нечего паралеллить
պլհկ
померяйте там, пишу с калькулятора
https://play.rust-lang.org/?gist=f2e9af1dc887ab53a8f27d4b4fc25b4e&version=stable
Маjко
У меня буффер
Vladimir
ну там просто в коде
if self.buf.len() + buf.len() > self.buf.capacity() {
self.flush_buf()?;
}
Маjко
Anonymous
ну мне интересно как такой код сравнится с BufWriter::with_capacity
Cuno
Забавно. Со включенной инкрементальной сборокой бинарь в 5 раз медленнее работает.
Маjко
Вывод быстрый в /dev/null