BufWriter<Master<'_>> – Telegram
BufWriter<Master<'_>>
105 subscribers
451 photos
28 videos
34 files
1.7K links
https://www.patreon.com/alxe_master

Видео/статьи. Конспект и мои вольные комментарии по инженерии. тут только то, что считаю полезным для себя или других =)

#os, #cloud, #rust, #golang, #python, #javaScript, #cpp, etc
Download Telegram
нашел еще пару мест в проекте, где было не асинхронные вызовы. поправил. с ходу сразу 10% прироста в скорости. приятно. блокировки были
https://habr.com/ru/post/347726/ то как работает асинхронный ввод вывод, сравнение моделей #rust и #golang

«Rust тщательно следит за тем, чтобы вы не платили за те вещи, которые не используете, и это (использование легковесных нитей) накладывает ограничения на весь ваш код, даже если вы эти самые легковесные нити не используете.»
https://doc.rust-lang.org/nightly/unstable-book/the-unstable-book.html нестабильная книга по #rust все то что скрыто под фича тоглами
https://boats.gitlab.io/blog/post/the-problem-of-effects/ да. поддерживаю проблему с фэйлабл итераторами в #rust. дичайше больно постоянно прерывать где надо и не надо поток, просто потому что гдето словил ошибку. приходится разматывать итератор на форы, не удобно просто, в результате бывают и костыли
https://yaah.dev/try-blocks вот не знаю, честно, вроде как ОК =) штука, но это экономит не так уж и много строк #rust кода. И наоборот новые кейворды вводит, да и к томуже уверен потом понадобится match прикрутить после ифа с трай... и дароу питон, не уверен что хочу такого. нагородят стопроц. и так не самый простой синтаксис, но как фича для продвинутых, не плохо
https://habr.com/ru/post/492410/ просто ахренеть крутая статья про то как Яндекс намерял #rust и #cpp, не разобравшись как в прошлый раз мэйлру #rust и #golang

Объективно обсуждать относительные преимущества того или иного языка сложно, особенно если вам сильно нравится один язык и не нравится другой. Весьма часто новый апологет очередного "новоявленного языка-убийцы C++" делает громкие заявления, не разобравшись толком с C++, за что ожидаемо получает по рукам.
https://cfsamson.github.io/books-futures-explained/introduction.html книга по тому как сделать собственные фьючи в #rust. приколы работы с памятью, пины, экзекьютеры, рантаймы и вэйкеры... ну вся подноготная обьяснена и даже реализованы базовые примеры которые запускаются

https://docs.rs/crossbeam/0.7.3/crossbeam/sync/struct.Parker.html шикарная штука, как оказалось
https://habr.com/ru/post/138132/ #cpp #gcc

https://doc.rust-lang.org/rustc/profile-guided-optimization.html
PGO #rust
#llvm может в оптимизации по статистике профайлера. Profile Guided Optimization (PGO) получается почти как делает это JIT компилятор но в момент компиляции все зашивается и в рантайме уже ускорены какие то не самые оптимальные (вначале) вещи

в моем случае 16к строк #rust кода в базовом случае исолнилось 4.6сек (было 5.0сек). быстрей на почти 7% (pgo и lto оптимизации включены) видимо слишком оптимально пишу код, что компилятору и переставить нечего. смешенные чувства 🙈🤓 оптимизировались лишь места загрузки исходных данных с сериализацией для последующего юзания
https://doc.rust-lang.org/beta/std/sync/struct.Condvar.html Condvar штука которая может залочить поток пока... не исполнилось то что нужное в другом потоке. есть она не только в #rust конечноже
https://doc.rust-lang.org/std/panic/fn.catch_unwind.html возможность отловить панику в #rust. но есть и те виды паники которые не отловить и даже этим способом. память закончилась например. и что бы отловить хоть чтонибудь нужна память Х)). приложение просто выйдет с ошибкой, логично
https://notes.iveselov.info/programming/rust-closures-combining-move-and-fn
Еще раз про то что любое замыкание это структура данных. и когда мы передаем данные дальше нам обязательно делать move и клон, так как иначе мы не можем заимствовать значения из структуры. в языках где есть GC все тоже через структуру, но так как GC сам может отслеживать время жизни то этого просто не замечаем. Ну а в языках с ручным управлением памятью как в #rust - все немного сложней, но и бенефиты есть за счет этого. Если воспринимать замыкание как структуру данных со всеми данными которые нужны что бы потом запуститься, то все становится на свои места