Маjко
в котором ты не можешь сказать как это работает, ну там кароч это оптимизируется, хрен знает
Осилишь перечислить оптимизации, которые GCC применяет на -O2 и как все они работают?
Vladimir
так он про системное в целом
Vladimir
че вы
Сережа
да я даже в паскале не могу, чо уж там
Vladimir
другое дело жавка
Anonymous
м
Маjко
другое дело жавка
Осилишь перечислить оптимизиции, которые применяет жавовский JIT и как они работают? 😂
Vladimir
где ты не паришься об оптимизациях, а надеешься, что твоя виртуальная машина не придет убирать мусор...
Vladimir
еее Мемори лики
Маjко
еее Мемори лики
Это безопасно (с)
Vladimir
ну Лан тогда
Anonymous
че быстрее (0..99999).for_each(|x| println!("{}", x)); for x in 0..99999 { println!("{}", x); }
Сережа
принтлн в стдаут буфферезируется наверн?
Anonymous
я только проснулся
Сережа
мерятся бенчмарками еще бессмысленне чем смотреть nim, мне это по нраву
Vladimir
let b = BufWriter::new(io::stdout()); for x in 0..99999 { writeln!(b, "{}", x); }
Anonymous
нене
Сережа
Йо, я слышал стдаут буфферезируемый, так что мы сделали еще один буфер, чтобы буфферезировать твой буфферизируемый стдаут
Vladimir
где ты это слышал
Alex
этожгениально
Сережа
ты не смотрел тачка на прокачку?
Сережа
с xzibit ом?
Vladimir
я про буферизируемый
Vladimir
стдаут
Сережа
это репер такой, черный
Сережа
в c++ cout - буфферезируемый, cerr - нет
Сережа
про раст я ничего не знаю
Vladimir
чет по параолимпиаде позавчерашней с++ не очень буферезируемый
Маjко
Одинаково
Маjко
Я правда вывод убрал
Vladimir
нет
Vladimir
и тут итераторы быстрее
Vladimir
слава итераторам
Vladimir
смерть циклам
Anonymous
ура
Anonymous
пойду все на итераторы переписывать
Маjко
Iter Vult
Сережа
на c++ как и на джаве люди бабки зашибают, им некогда учавствовать в спецолимпиадах, вот хаскелл, раст - это да!
Vladimir
пойду все на итераторы переписывать
ну и время пошло, циклы переписывают на итераторы Асинхронщину на циклы
Маjко
А крестодети всё еще не уверены какой вывод буферизованный
Маjко
Че с них взять
Vladimir
ну async/await генераторы
Vlad
Главное что-нибудь куда-нибудь переписывать
Anonymous
а причем тут циклы
Сережа
stdout в вашем расте кстати тоже буфферизированый
Сережа
https://doc.rust-lang.org/std/io/fn.stdout.html ...handle returned is a reference to a shared global buffer...
Vladimir
а причем тут циклы
смысле причем, асинк авейт, это про то, чтобы итераторы вернуть обратно в императивный стиль
Anonymous
ну
Сережа
на всякий случай, тут пацаны рассказывают как сделать небуфферизируемый https://www.reddit.com/r/rust/comments/6hoayo/how_do_i_write_to_stdout_without_line_buffering/
Anonymous
стоп
Маjко
stdout в вашем расте кстати тоже буфферизированый
Тормоза как и в крестах из-за медленных мьютексов, которые надо захватыватьк каждый раз
Anonymous
ааааа
Маjко
Точнее из-за RwLock
Сережа
в крестах cout - несинхронизированный
Маjко
Но буффер дефолтный все равно говно
Маjко
в крестах cout - несинхронизированный
Тогда объясни почему так медленно?
Vladimir
Точнее из-за RwLock
ща б rwlock на stdout ставить
Vladimir
хех
Сережа
там вроде бы operator« - это оператор, говорят принтф быстрее
Anonymous
<<
Сережа
да
Anonymous
в расте тоже есть такой оператор
Сережа
или ты не про это?
Vlad
Да вродь наоборот как раз? << быстрее?
Vladimir
для целых точно быстрее
Vlad
По крайней мере задумка изначально была такая... А printf шаблон при каждом вызове парсит. Не то что раст!
Сережа
https://stackoverflow.com/questions/2872543/printf-vs-cout-in-c
Cuno
в крестах cout - несинхронизированный
Синхронизированный, если не вызывать sync_with_stdio(false).
Маjко
Ща микробенчмарки крестов еще пойдут
Маjко
Лол
Anonymous
impl std::ops::Shl<&str> for std::io::Stdout { type Output = (); fn shl(self, input: &str) { writeln!(self, "{}", input); } }