Маjко
Там какие-то вообще копейки
Vladimir
забавно 2 добавив буфер дополнительный ускоряется на 0.5 секунд
Маjко
Самое долгое — как раз заполнение буффера строками
Vladimir
та просто если юзать Буфврайтер напрямую то он чет тормозит
Vladimir
если через твой велосипед
Vladimir
то работает чучуть быстрее
Anonymous
странно
Anonymous
а кепейсити такое же?
Vladimir
может екстенд аром слайс работает быстрее, чем то что под капотом у буферврайтера
Anonymous
оо
Маjко
может екстенд аром слайс работает быстрее, чем то что под капотом у буферврайтера
Там специализация, по идее не должно быть разницы между extend и extend_from_slice
Маjко
Ща
Vladimir
да если честно я хз как они там пишут под капотом, и впаду заглядывать (в iml Write for &mut [u8])
Anonymous
huh
Маjко
И какая частота памяти?
Vladimir
kjk
Vladimir
вы билете хоть с cargo rustc --release -- -C target-cpu=native
Vladimir
чтоб вообще честно?
Vlad
Стоп, я user посмотрел
Vlad
1.95user 0.59system 0:02.54elapsed 2.31user 0.25system 0:02.56elapsed
Vlad
Тут time какой-то странный
Vlad
Проц 3210M, память без понятия 1333 вроде
Vladimir
у меня 2.914 total @mersinvald против 2.954 total у @notplhk и 2.434 total если немного подманить решение @notplhk
Маjко
Да, с параллельностью не зашло
Vladimir
кто там хаскель умеет запускать
Vladimir
какие последние цифры между @mersinvald и хаскелем?
Vladimir
вот вам короче код @notplhk но с выводом через буфер #![feature(test)] extern crate test; use std::io; use std::io::{BufWriter, Read, Write }; fn main() { let mut buf = Vec::new(); let stdin = io::stdin(); let mut stdin = stdin.lock(); let mut pref = Vec::with_capacity(10000); let mut suff = Vec::with_capacity(10000); stdin.read_to_end(&mut buf).unwrap(); let split = buf.split(|b| *b == b' ' || *b == b'\n'); for (i, s) in split.enumerate() { if s.is_empty() { continue; } if i % 2 == 0 { pref.push(s); } else { if s[s.len()-1] == b'\r' { suff.push(&s[..s.len()-1]); } else { suff.push(&s[..]); } } } let stdout = io::stdout(); let mut out = BufWriter::with_capacity(100000,stdout.lock()); for x in &pref { for y in &suff { let _ = out.write(x); let _ = out.write(y); let _ = out.write(b"\n"); } } }
Anonymous
почему не костыльный буфер то
Vladimir
этот оказался лучше
Anonymous
🤔
Anonymous
только в этом случае ?
Anonymous
и что это за feature(test)
Vladimir
а забей то мое
Vladimir
удалить можно
Vladimir
блекбокс зал из тестов
Anonymous
тут вроде без найтли собирают
Vladimir
убери первые две строки
Vladimir
и собирай
Маjко
Ееее бой
Маjко
0.89
Vladimir
md5 проверь
Маjко
Блять
Vladimir
😂
Маjко
А, понятно
Vladimir
@anarchostatist так проверь с хаскелем
Маjко
Так, md5 сошелся
Маjко
0.94
Маjко
Ща залью на гх
Маjко
0.68 с маленьким ансейфом
Маjко
https://doc.rust-lang.org/std/intrinsics/fn.unlikely.html
Vladimir
лол
Vladimir
ну залей хоть посмотрю на своем скок
Маjко
Найтли есть?
Маjко
https://github.com/mersinvald/rust-vs-haskell-special-olimpiade
Маjко
У меня на ноуте, при условии вывода в /dev/null, моё решение уделывает сишное
Маjко
Хотя не, даже если в файл — уделывает
Vladimir
ну короче буфер и правда быстрее чем буфврайтер из стд либы
Vladimir
буфер ориентированный на запись мелких чанков
Vladimir
но изба этого анлайкли он правда с большим разбросом в дев нуля пишет
Vladimir
1.6 -> 1.4 на моем маке
Vladimir
короче чучуьт подтюнить размер буфера не помешает
Vladimir
чуть больше уже разброс не такой
Маjко
Попробуй
Маjко
У меня нет разницы
Маjко
Это шибко железоспецифичное говно, хер угадаешь где как лучше
Vladimir
у тебя видимо мегагерцев много
Маjко
2.6
Маjко
И кэш маленький
Маjко
Но память быстрая
Маjко
Хотя она тут не важна почти
Vladimir
2,7 GHz Intel Core i5 кеш 256кб л2
Vladimir
1867 MHz DDR3
Маjко
Тогда странно: 200кб буффер это почти в притык по кэшу
Маjко
L2