Anonymous
chrono ~/meme ‹master*› » time ./target/release/meme < ./a > /dev/null 130 ↵
./target/release/meme < ./a > /dev/null 2.43s user 0.02s system 99% cpu 2.459 total
Anonymous
кто там на расте просил...
Dmitry
что это?
Dmitry
да, можно исходник и как его
Dmitry
компилять запускать
Anonymous
кого
Anonymous
а
Anonymous
https://ghostbin.com/paste/dwrda
Danila Matveev
Anonymous
cargo new --bin meme
cd meme
* кидаешь код в main.rs *
cargo build --release
time ./target/release/meme < ./a > /dev/null
Anonymous
без буферов гдет 25 секунд было
Alexander
о, а скиньте новые номера
Alexander
я наверное играться уже не буду но интересно
Dmitry
3.128
Dmitry
лучше pypy но хуже хаскеля.
Dmitry
спасибо за подгон
A64m
ну вот, ничего интересного раст не продемонстрировал
Anonymous
хейтерс гонна хейт
Dmitry
я все таки постараюсь щас на сях запилить, но по-взрослому, с аллокациями
Dmitry
хотя что-то это весьма запарно получится. надо будет еще и контейнеры какие-нибудь приделать, ох
Anonymous
а порядок вывода не важен?)
Dmitry
ну, вывод будет не такой же, как у остальных, если в прстой список напихать
Dmitry
слушайте, но раст получается даже более вербозный, чем сишарп
Dmitry
как же так
Dmitry
его ж позже делали
eahqzsr
В оригинальной задаче не важен, важно чтоб все были. Но тут стремятся к общему знаменателю, чтоб значит проверить что все ок.
eahqzsr
Ну раст позиционируется как низкоуровневый язык.
eahqzsr
Т.е. замена С.
Dmitry
не уверен, что особо извиняет
A64m
@voidlizard трехсекундная версия на сишарпе будет такой же вербозной
Danila Matveev
Anonymous
без BufReader/BufWriter
Ilya
https://ghostbin.com/paste/dwrda
for x in &pre {
for y in &suf {
let _ = out.write(x);
let _ = out.write(y);
let _ = out.write(b"\n");
}
}
это идиоматично, так писать?
Anonymous
Oleg
А stdin разве не надо локать перед использованием?
A64m
на клине так и пишут, по крайней мере
Anonymous
Oleg
Если залокать - получится ли быстрее?
Danila Matveev
Anonymous
да
A64m
а нет, чего я тут продергивания аргумента то нет
Alexander
а что там у си в итоге или забили писать на нем полноценно?
Alexander
и на го не хватает
a66ath
Входной файл дайте
Anonymous
eahqzsr
MD5sum канонического вывода eb8d32c8d260d240b351dfadd42cb5e5
Dmitry
на этом канале только sha256
Dmitry
юмор.
Alexander
так.. если в файле строки заканчиваются на \r\n то тогда от перестановки слов в билдере съедается кусок
Alexander
[qnikst@nixos:~/workspace/myself/experiments/bug]$ hexdump -c test2.txt
0000000 m y g f c 5 t g 3 e \r \n v i v
0000010 3 s k w a m 1 \r \n
000001a
[qnikst@nixos:~/workspace/myself/experiments/bug]$ hexdump -c test.txt
0000000 m y g f c 5 t g 3 e \n v i v 3
0000010 s k w a m 1 \n
0000018
Alexander
это законно?
Alexander
[qnikst@nixos:~/workspace/myself/experiments/bug]$ ./test-case < test.txt
5tg3emygfc
kwam1mygfc
5tg3eviv3s
kwam1viv3s
[qnikst@nixos:~/workspace/myself/experiments/bug]$ ./test-case < test2.txt
mygfc
mygfc
viv3s
viv3s
Alexander
во втором случае первый чанк это 5tg3e\r
Alexander
а блин это все долбаный терминал так показывает
eahqzsr
https://pastebin.com/8eqKFpea
Алексей
\r зативает строку?
Alexander
да
Alexander
но
eahqzsr
c-версия со внутренней буферезацией
Alexander
в hexdump интереснее
Alexander
а стоп, ignore me
Alexander
в общем в терминале \r затирает строку
Алексей
Вроде и должно
eahqzsr
хм, а откуда там \r\n? Это pastebin так её поломал?
Алексей
\r,ЕМНИП — возврат каретки
Alexander
[qnikst@nixos:~/workspace/myself/experiments/bug]$ echo $'foobar\rblah'
blahar
Alexander
ага
Alexander
и вторая часть перетирает первую
Alexander
т.к. по 5 символов
Alexander
бага нет, но newline бы получше обрабатывать
Alexander
что впрочем разумно, т.к. такой баг бы давно заметили
Alexander
@eahqzsr нечестно write делаешь, но пофиг
Alexander
сигнал прилитит или какой EAGAIN и останешься без куска буффера
Alexander
судя по warning-ам
Alexander
SIGSEGV :(
Anonymous
а какое там у хаскеля время было?
Alexander
1.2s на моём компе
Alexander
вторая версия pypy 2.3s на моём
Anonymous
я думал здесь на одном компьютере бенчмаркают
Alexander
поэтому я дал числа с моего