պլհկ
$ sudo du -sh *
22M git
157M registry
6.0G target
kitsu
պլհկ
you_re_like_a_little_baby_meme.jpg
Sherzod
Sergey
https://github.com/tensorflow/rust
Sergey
ништяки
Kerrigan
ура, идея тоже сломалась
Loo
Kerrigan
В смысле?
не индексирует и автокомплит с большой задержкой
Kerrigan
так должно быть?
Safort
kitsu
Kerrigan
Alexander
А есть боги оптимизации в чате?
Денис
только боги войны
Денис
... войны с борроу-чекером
Aleksey
😄
Alexander
Ну ваще , признать что пару месяцев писанины и боров-чекер уже хоть и не друг, но хотя бы ужас перестёт вызывать.
Alexander
По сути просто надо подумать где хочешь убить данные. Иногда, если что-то свяжешь не так - то просто одна структура будет за другую держаться, хотя и не должна - мемори лик по сути :)
Alexander
Ну типа того.
Alexander
Точнее с производительностью итератора.
vladislav
Alexander
https://github.com/inv2004/soa_iter_bench/blob/master/src/main.rs
Alexander
Почему test_old2 медленнее чем test_zip ? Хотя там почти одно и тоже по сути.
vladislav
сложна. Если всё правильно понимаю, то в test_zip у тебя линия, тк один раз итерируешься по коллекции. В test_old2 у тебя лямбда с циклом, по идее должен быть квадрат
vladislav
Но я не знаток раста, так беглый взгляд. Хз как это работает под капотом.
vladislav
а бля
vladislav
проглядел, в первом то же
Денис
test test_old2 ... bench: 1,644,049 ns/iter (+/- 58,290)
test test_zip ... bench: 1,584,199 ns/iter (+/- 51,280)
Денис
разницах в пределах погрешности
-__-
У Zip специализация есть https://doc.rust-lang.org/src/core/iter/mod.rs.html#1078
vladislav
Забавно
Alexander
Alexander
У меня на хостинге на intel atom разница заметна - 12% где-то.
պլհկ
perf record @ perf report
Alexander
Я извиняюсь, что такое специализация у zip ?
Loo
Alexander
Я там только инлайны заметил, которые не повлияли.
Alexander
Но у меня по сути тип векторов одинаковый вроде.
vladislav
вот даже мержак есть, мб там чего-то наглядишь
https://github.com/rust-lang/rust/pull/48635
vladislav
если не ошибаюсь, это то
vladislav
Alexander
Смотрите. У меня есть test_new, который вообще просто через zip всё делает, но он почему-то самый тормозной. Хотя я думал что разницы вообще не должно быть.
vladislav
Alexander
Потому что то что есть сейчас вообще дико тормозит, вроде old2 получше, но все равно не так быстро на вид как просто через итератор прогнать, но тогда поля надо указывать - абстракция пропадает, которая как бы zero-cost должна быть.
vladislav
vladislav
Обычно "всё дико тормозит" из-за кривого алгоритма, а не итерации, я думаю, llvm замечательно справится с оптимизацией здесь
Alexander
Ну пример показывает. Уверен.
vladislav
Что твоя программа делает и тд
Alexander
Тут в примере почти все полностью есть. И можно заметить как тормозит test_old даже в сравнении с test_old2. Хотя там отличия не особо даже видны.
Alexander
В другом месте кода побольше и там тоже видно х3 задержку в общем времени вычисления на итераторах как в test_old в сравнении с другими.
Alexander
Но по сути это все не играет роли мне кажется - в коде выше в бенчмарках видно что тормозит , а что нет.
Alexander
По сути я не вижу разницы между test_zip и test_old2 , но по производительности она есть.
Nikita
А есть возможность убирать из исполнения некоторые тесты?
պլհկ
есть
Nikita
А можно узнать - как?
Nikita
А то когда 10+ тестов выполняется уже ничего не понятно
պլհկ
#[ignore]
Nikita
Nikita
Вот пожалуй ещё вопрос для того чтобы использовать #!feature(zero_one)] например обязательно ставить nightly версию?
պլհկ
для использованию любых фич обязательно
Nikita
Ну и третий вопрос почему на MacOS может не обновляться гребанный карго и раст? Приходится с каждым релизом его деинсталлировать и снова ставить
Nikita
պլհկ
պլհկ
https://www.rustup.rs
Nikita
Чёт
Nikita
И это странно
պլհկ
у меня работает, какая проблема?
Nikita
Хотя я даже с правами суперпользователя пробовал