JSON в #rust. трейты с примерами
Encode/Deocde
Serialize/Deserialize
http://siciarz.net/24-days-of-rust-working-json/
http://valve.github.io/blog/2014/08/25/json-serialization-in-rust-part-1/
http://valve.github.io/blog/2014/08/26/json-serialization-in-rust-part-2/
кстати не знал про пакет json_macros https://crates.io/crates/json_macros удобненько описывать можно жсон структуры
Encode/Deocde
Serialize/Deserialize
http://siciarz.net/24-days-of-rust-working-json/
http://valve.github.io/blog/2014/08/25/json-serialization-in-rust-part-1/
http://valve.github.io/blog/2014/08/26/json-serialization-in-rust-part-2/
кстати не знал про пакет json_macros https://crates.io/crates/json_macros удобненько описывать можно жсон структуры
siciarz.net
24 days of Rust - working with JSON | Blog | siciarz.net
Important note: this article is outdated! Go to http://zsiciarz.github.io/24daysofrust/ for a recent version of all of 24 days of Rust articles. The blogpost here is kept as it is for historical reasons.
JSON is a workhorse data format of the modern Web.…
JSON is a workhorse data format of the modern Web.…
https://notes.iveselov.info/programming/rust-closures-combining-move-and-fn
Еще раз про то что любое замыкание это структура данных. и когда мы передаем данные дальше нам обязательно делать move и клон, так как иначе мы не можем заимствовать значения из структуры. в языках где есть GC все тоже через структуру, но так как GC сам может отслеживать время жизни то этого просто не замечаем. Ну а в языках с ручным управлением памятью как в #rust - все немного сложней, но и бенефиты есть за счет этого. Если воспринимать замыкание как структуру данных со всеми данными которые нужны что бы потом запуститься, то все становится на свои места
Еще раз про то что любое замыкание это структура данных. и когда мы передаем данные дальше нам обязательно делать move и клон, так как иначе мы не можем заимствовать значения из структуры. в языках где есть GC все тоже через структуру, но так как GC сам может отслеживать время жизни то этого просто не замечаем. Ну а в языках с ручным управлением памятью как в #rust - все немного сложней, но и бенефиты есть за счет этого. Если воспринимать замыкание как структуру данных со всеми данными которые нужны что бы потом запуститься, то все становится на свои места
notes.iveselov.info
Rust Closures: Returning `impl Fn` for `move` closures | IV Notes
https://vfoley.xyz/rust-compilation-tip/
https://www.philipdaniels.com/blog/2019/rust-release-mode-builds/
для #llvm при компиляции #rust можно указать под какой процессор все компилировать и это может дать ускорение
в моем случае это дополнительно к
https://www.philipdaniels.com/blog/2019/rust-release-mode-builds/
для #llvm при компиляции #rust можно указать под какой процессор все компилировать и это может дать ускорение
в моем случае это дополнительно к
PGO и LTO дало еще 1% мало но дало =) иногда можно выжать куда большеhttps://docs.google.com/presentation/d/1B3n6iioXYzYZ7WP9yq7l2_eyHOTsr6jUSOU2nfgGPMY/edit#slide=id.g59eaa0c0cb_4_452
https://docs.google.com/presentation/d/1nQxbBkHYOAXAcodVk-14th5nXhIYaOaa0cK7UG1bgxk/edit#slide=id.g59eaa0c0cb_4_452
https://docs.google.com/presentation/d/16n62-XZ1kpF-lkb2j-jRVnaYeYWZf5EyVy4eBcs0ANc/edit#slide=id.g63261c2bb8_1_184
про Serde в #rust
для себя нашел
https://docs.google.com/presentation/d/1nQxbBkHYOAXAcodVk-14th5nXhIYaOaa0cK7UG1bgxk/edit#slide=id.g59eaa0c0cb_4_452
https://docs.google.com/presentation/d/16n62-XZ1kpF-lkb2j-jRVnaYeYWZf5EyVy4eBcs0ANc/edit#slide=id.g63261c2bb8_1_184
про Serde в #rust
для себя нашел
tag гибко очень можно настроить как enum будет сериализоваться. даже типизированные данные можно сразу сгружать в отдельный проперти одной строчкой. пойду везде поменяю =)Google Docs
2019-05-09 Unpacking Serde (1/3) by Erich Gubler
Unpacking Serde #1 The Serde model and structs
https://www.youtube.com/watch?v=rAl-9HwD858
https://www.youtube.com/watch?v=q6paRBbLgNw
плэйлист по #rust про
https://www.youtube.com/watch?v=q6paRBbLgNw
плэйлист по #rust про
lifetimes annotation and declarative macros смотрел и другие видео от автора. хорошо доступно рассказываетYouTube
Crust of Rust: Lifetime Annotations
In the 2019 Rust Survey, a lot of people were asking for video content covering intermediate Rust content. So in this first video (possibly of many), we're going to investigate a case where you need multiple explicit lifetime annotations. We explore why they…
https://github.com/RazrFalcon/cargo-bloat
случайно нашел анализатор того что попадает в бинарник #rust
https://github.com/johnthagen/min-sized-rust а тут немного про все плюшки оптимизации под размер бинарника
случайно нашел анализатор того что попадает в бинарник #rust
https://github.com/johnthagen/min-sized-rust а тут немного про все плюшки оптимизации под размер бинарника
GitHub
GitHub - RazrFalcon/cargo-bloat: Find out what takes most of the space in your executable.
Find out what takes most of the space in your executable. - RazrFalcon/cargo-bloat
https://mike42.me/blog/2018-06-make-better-cli-progress-bars-with-unicode-block-characters мелочь но не забыть бы. символы для прогрессбара
#terminal , #console , #color
#terminal , #console , #color
Mike's Software Blog
Make better CLI progress bars with Unicode block characters
As a programmer, you might add a progress bar so that the user has feedback while they wait for a slow task.
If you are writing a console (CLI) application, then you need to make your progress bars from text. A good command-line progress bar should update…
If you are writing a console (CLI) application, then you need to make your progress bars from text. A good command-line progress bar should update…
https://gist.github.com/amatellanes/a986f6babb9cf8556e36 так пусть просто полежит. список команд и методов celery #python
Gist
Celery handy commands
Celery handy commands. GitHub Gist: instantly share code, notes, and snippets.
Forwarded from 0x1337
Табличка с замерами Latency / Throughput, которой ну очень удобно пользоваться. Кстати, информация куда более полная чем у Агнера Фога:
https://uops.info/table.html
#optimization #asm
https://uops.info/table.html
#optimization #asm
Forwarded from 0x1337
Ребята, как я и обещал - радую годным, авторским контентом. Увы, скидывать целиковые статьи, а точнее читать их тут - дело не из простых. Поэтому, сами статьи публикую 'где-то', а сюда скидываю ссылку. Так вот, авторский контент подъехал:
https://habr.com/ru/post/468581/
#publication #asm #cxx #optimization
https://habr.com/ru/post/468581/
#publication #asm #cxx #optimization
Хабр
Делись, рыбка, быстро и нацело
Деление — одна из самых дорогих операций в современных процессорах. За доказательством далеко ходить не нужно: Agner Fog[ 1 ] вещает, что на процессорах Intel / AMD мы легко можем получить Latency в...
Forwarded from 0x1337
Данные в процессор загружаются из памяти. Дело это не быстрое:
https://www.7-cpu.com/
Вот тут^ выбери модель интересующего тебя процессора и посмотри, какова цена работы процессора с 'Голой' памятью. На Haswell, например, 90 clock cycles.
#measurments #ram #processor #link
https://www.7-cpu.com/
Вот тут^ выбери модель интересующего тебя процессора и посмотри, какова цена работы процессора с 'Голой' памятью. На Haswell, например, 90 clock cycles.
#measurments #ram #processor #link
Forwarded from 0x1337
Продолжая рассуждения на тему обмена данных между Процессором и Памятью:
Есть Out Of Order Execution процессор, есть кусочек кода который подгружает данные из Памяти в Кеш Процессора и как-либо обрабатывает их после, и есть код который отрабатывает ДО места где эти данные загружаются / используются.
Из поста выше мы знаем, что обмен данными между Памятью и Процессором - долог: если на момент пользования обмениваемыми данными, в Кеше Процессора их нету - работа встанет. Процессор, конечно, не дурак и просматривая Фреймы наперед, начнет загрузку данных в Кеш еще до того как они реально понадобятся, параллельно выполняя команды идущие ДО. То есть я к чему: нужно писать код так, чтобы до Работы с Памятью можно было сделать какую-либо полезную Память-Независимую работу, на фоне выполнения которой и будет происходить опережающая выгрузка данных из Памяти.
#memory #cache #prefetching
Есть Out Of Order Execution процессор, есть кусочек кода который подгружает данные из Памяти в Кеш Процессора и как-либо обрабатывает их после, и есть код который отрабатывает ДО места где эти данные загружаются / используются.
Из поста выше мы знаем, что обмен данными между Памятью и Процессором - долог: если на момент пользования обмениваемыми данными, в Кеше Процессора их нету - работа встанет. Процессор, конечно, не дурак и просматривая Фреймы наперед, начнет загрузку данных в Кеш еще до того как они реально понадобятся, параллельно выполняя команды идущие ДО. То есть я к чему: нужно писать код так, чтобы до Работы с Памятью можно было сделать какую-либо полезную Память-Независимую работу, на фоне выполнения которой и будет происходить опережающая выгрузка данных из Памяти.
#memory #cache #prefetching
Forwarded from 0x1337
Привет! Джем и Горячий чай уже ждут тебя:
https://habr.com/ru/post/470674/
Контент авторский, тут все по плану. Ну а утро бывает не только добрым, но и теплым, да.
#link #publication #cxx #allocator #data_structure #interesting
https://habr.com/ru/post/470674/
Контент авторский, тут все по плану. Ну а утро бывает не только добрым, но и теплым, да.
#link #publication #cxx #allocator #data_structure #interesting
Хабр
Inside The JeMalloc. Базовые Структуры Данных: Pairing Heap & Bitmap Tree
Тема Аллокаторов частенько всплывает на просторах интернета: действительно, аллокатор — эдакий краеугольный камень, сердце любого приложения. В этой серии постов я хочу в подробностях рассказать о...
https://www.youtube.com/watch?v=51lqHKVDoBE модули пельтье в охлаждении #pc фактически это реактивный буст охлаждения. как будто проц работает в комнате с -40 по цельсию
YouTube
Охлаждение на Пельтье. Часть 2. Увеличил эффективность в 2.1 раза
Кулеры для ПК - https://www.e-katalog.ru/u/nVGzj/a
Комплектующие - https://www.e-katalog.ru/u/qUrgE/a
В видео я рассказываю как сделать, возможно, самое лучшее охлаждение которое может поместиться в обычный компьютерный корпус на основе элементов Пельтье…
Комплектующие - https://www.e-katalog.ru/u/qUrgE/a
В видео я рассказываю как сделать, возможно, самое лучшее охлаждение которое может поместиться в обычный компьютерный корпус на основе элементов Пельтье…
Make LLVM fast again
https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html.html ускорение #llvm, просто отлично, что оно двигается в направлении ускорения компиляции
https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html.html ускорение #llvm, просто отлично, что оно двигается в направлении ускорения компиляции
https://joellaity.com/2020/01/25/linking.html статья про то как работает линковка в #cpp. впрочем в #rust и #swift тожесамое
Joel Laity
How linking works
I. Introduction
https://joellaity.com/2019/02/28/checkmate-undefined-behavior.html немного про Undefined Behavior в #cpp
Joel Laity
Checkmate, undefined behavior
Undefined behavior is the bane of C and C++ programmers. The compiler can choose to do whatever it wants if a program has undefined behavior. This is normally not a good thing, but I recently wrote some code with undefined behavior and amazingly the compiler…
https://docs.google.com/presentation/d/1VnisvNEUj0Q7JzHbvGqTOVM9zcLuHhBOwg4aaTx6cMQ/edit#slide=id.p причина почему #cpp это боль. название говорит за себя. нужен целый гайд что бы понять как оно работает. вообще не смешно
Google Docs
2020-05-07: The Complete Guide to `return x`
The Complete Guide to return x; I also do C++ training! arthur.j.odwyer@gmail.com Arthur O’Dwyer 2020-05-07
https://blog.reverberate.org/2020/05/12/optimizing-date-algorithms.html про оптимизации превращения даты в юникс эпоху, магические числа, #fortran #c с бенчмарками
blog.reverberate.org
Optimizing UTC → Unix Time Conversion For Size And Speed
Parsing, performance, and low-level programming.
https://blog.reverberate.org/2009/01/llvm-bitcode-vs-protocol-buffers.html прям по свежему. недавно копал разного вида бенчмарки мгновенной десериализации данных, и тут старая статья про биткод #llvm и #protobuf... если коротко то бикод выиграл по месту... по остальным показателям протобаф ообошел. НО в моих бенчах на #rust имплементация протобафов получилась чуть ли не самая тормозная и в результате выбрал малоизвестную либу
speedy которая работает так же как bincode но оптимизирована по скорости загрузки в память сразу в нужном виде (что критично важно)blog.reverberate.org
LLVM Bitcode vs. Protocol Buffers
Parsing, performance, and low-level programming.