Evgεny
к подобным штукам приходят, когда все стало обыденностью
Evgεny
на каком-то сайте было написано
Evgεny
про мазохизм
Pavel
Смена проф ориентации. Интересно в иот + веб
vladislav
учи Си
Evgεny
боже упаси
vladislav
раст — это игрушка уставших от энтерпрайза разработчиков
vladislav
</sarcasmMode>
Pavel
То что вакансий на рынке всего 5-8 оч смутило. Но все говорят о бурном развивающемся сообществе + параллельное программирование вроде как актуальная тема
vladislav
И всем нужны разработчики с опытом
vladislav
так что развивайся в ключе мейнстрима, будет легче найти вакансию
Pavel
> иот + веб js
Сбор инфы приводит к python+js
vladislav
ну вот и учи питон + жс
Pavel
Просто уж очень интересно стало , общался с людьми (кто то тех дит, кто то сеньор), очень лестно отзывались о языке и даже внедряют его в рабочий процесс.
vladislav
Просто уж очень интересно стало , общался с людьми (кто то тех дит, кто то сеньор), очень лестно отзывались о языке и даже внедряют его в рабочий процесс.
Ну, оценивай рынок сам, я бы пошёл по пути наименьшего сопротивления, Rust ты всегда успеешь освоить, если на твоём месте работы он будет применяться
պլհկ
Жс или голанг
Pavel
Жс или голанг
Я так понял что жс маст хэв везде. Эти 2 делят нишу ? Где го применяют?
պլհկ
В бекенде, где раньше петухон, руби и пхп был
Денис
петухон)) надо запомнить)
պլհկ
Учится за неделю, потом можно на сложных щщах ходить и насмехаться над пыхерами
Alexander
Только выправили soa-derive . Как тут же видно что .rev() тоже отстаёт в скорости во много раз.
Pavel
Учится за неделю, потом можно на сложных щщах ходить и насмехаться над пыхерами
Отсюда вопрос почему все не метнулись его учить? Вакансий я посмотрел не особо много
vladislav
Alexander
по-моему, ты занимаешься абсолютно бессмысленным делом
Прочитав это так и захотелось что-то осмысленное сделать.
Kerrigan
не понял зачем нужен этот soa-derive, объясните
vladislav
Прочитав это так и захотелось что-то осмысленное сделать.
Оставил бы оптимизации компилятору и писал понятный код с приемлимой алгоритмической сложностью
Alexander
Оставил бы оптимизации компилятору и писал понятный код с приемлимой алгоритмической сложностью
Я не понимаю что значит оставил бы оптимизацию. Когда видна просадка минимум в 3 раза. Как мне её оставить?
Alexander
не понял зачем нужен этот soa-derive, объясните
Я об этом писал выше - это очень удобная структура для данных, особенно векторизованных.
Антон
не понял зачем нужен этот soa-derive, объясните
Работать с массивами отдельных полей структуры эффективней, чем с массивами структур. soa-derive нужен для того, чтобы при этом бойлерплейт руками не писать
Антон
А вообще, гугли data-driven development
Денис
проводить оптимизацию на искусственных данных, не имея при этом рабочего прототипа, это конечно найс)
Денис
но, на вкус и цвет
Alexander
Почему на искусственных?
vladislav
проблемы с производительностью это в 99% проблемы в алгоритме
Денис
ну, я рад, что по рабочему прототипу возражений не поступило )
vladislav
Почему на искусственных?
у тебя очень камерный пример, есть какие-то структуры, ты проходишь по ним и что-то считаешь, ты действительно полагаешь, что выбор наиболее быстрого на данный момент способа итерации поможет тебе ускорить реальную, более сложную систему?
Денис
static ref VEC_A: Vec<u32> = { iter::repeat(()).map(|()| thread_rng().gen()).take(100_000).collect() };
vladislav
блять, почему люди не читают Дейкстру?(
պլհկ
Бля, у человека бизнес задача циферки дрочить
պլհկ
Почитайте про К в википедии
Alexander
Бля, у человека бизнес задача циферки дрочить
Ну вот именно, я не понимаю почему мне тут пытаются доказать что это не надо.
Денис
@inv2004 а у тебя в реале так и будет структура с маленьким количеством полей, и при этом каждое поле одинакового размера?
Alexander
При том что это более-менее уже делалось. Но в определенный момент начало резко тормозить тупо из-за кривых итераторов.
Денис
тебе кстати не пытаются доказать, что это не надо
Денис
оукеееей =)
vladislav
нормальный продакшон, мне б такой
Денис
ну ок, тогда я наверное был не прав про искусственные данные
պլհկ
Рекомендую спросить на реддите, там больше спецов
Денис
кстати вот что реально странно
Денис
https://ptpb.pw/WsCY/rust
Денис
test test_new2_rev ... bench: 1,566,793 ns/iter (+/- 51,917) test test_new2_rev2 ... bench: 1,461,609 ns/iter (+/- 32,904)
Денис
то есть получается, что .fold строго хуже, чем обычный for
Денис
чуть-чуть, но всё же
Денис
или я наговнокодил где-то?
Антон
или я наговнокодил где-то?
Попробуй написать let plus_calc: fn(_) -> _ = |acc, r| acc + r.calc(); и заменить .fold(0f32, |acc, r| acc + r.calc())) на .fold(0f32, plus_calc)
Денис
ща попробуем
Alexander
test test_new2_rev ... bench: 1,566,793 ns/iter (+/- 51,917) test test_new2_rev2 ... bench: 1,461,609 ns/iter (+/- 32,904)
Недавно PR сделали по крейту. New2 не смысла сейчас смотреть.
Денис
тут не в new2 смысл
Alexander
Проблема с _new_rev и в new_iter_rev
Антон
Попробуй написать let plus_calc: fn(_) -> _ = |acc, r| acc + r.calc(); и заменить .fold(0f32, |acc, r| acc + r.calc())) на .fold(0f32, plus_calc)
С версии 1.19 замыкание, не захватывающее контекст, можно привести к типу указателя на функцию.
Денис
ничего не изменилось
Денис
мне кажется компилер такие вещи и сам может оптимизировать
Alexander
К сожалению сумма - вот это реально из пальца высосал. Но на тестах работает. Надо что-то посложнее придумать чем сумма.
Денис
а какая операция в реальности?
Антон
мне кажется компилер такие вещи и сам может оптимизировать
Вообще да, но вдруг. Прогнать бенчи всё равно надо
Денис
я сделал, ничего не поменялось :(
Денис
даже если вынести это в отдельную функцию и сделать её #[inline], это всё равно ничего не меняет
Денис
наверное всё-таки есть разница в производительности между тем, чтобы, так сказать, in-place изменять значение, и чтобы его постоянно копировать на каждый чих