Маjко
Там какие-то вообще копейки
Vladimir
забавно 2 добавив буфер дополнительный ускоряется на 0.5 секунд
Маjко
Самое долгое — как раз заполнение буффера строками
Vladimir
та просто если юзать Буфврайтер напрямую то он чет тормозит
Vladimir
если через твой велосипед
Vladimir
то работает чучуть быстрее
Anonymous
странно
Anonymous
а кепейсити такое же?
Vlad
Vladimir
может екстенд аром слайс работает быстрее, чем то что под капотом у буферврайтера
Anonymous
оо
Anonymous
Маjко
Ща
Vladimir
да если честно я хз как они там пишут под капотом, и впаду заглядывать (в iml Write for &mut [u8])
Маjко
Маjко
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
Vlad
Маjко
Ма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