📓 Записки программера
1.01K subscribers
304 photos
1 video
6 files
599 links
Канал с регулярными постами о разных интересных материалах (статьи, видео, фреймворки и полезные инструменты).

https://dotnet.social/@denisio
Download Telegram
Продолжаем ковырять SSE/AVX, но тут кажется мне не помешала бы пояснительная бригада. Для поиска элемента в int[] используется Sse2.CompareEqual, которая может сравнивать 4 (Vector128) или 8 (Vector256) элементов.

До 2048 (8 КБ данных) всё работает более менее - х1.5-2 для Vector128 и ещё больше для Vector256. Однако дальше Vector128 проседает по скорости до обычного цикла на 2048 элементов (8 КБ данных) и становится медленее, чем простой цикл для 4096+ (32 КБ данных) элементов.

Vector256 проседает попозже - начиная с 5120 (20 КБ данных) элементов он сравнивается со скоростью простого цикла.

Vector128 становится медленее всех, начиная с 3072 (12 КБ данных) элементов

Пока что у меня два объяснения:
🔸 влияние L2 кэша, он насыщается и за счёт того, что данные берутся из RAM скорость резко падает
🔸 процессор уходит в throttling, однако неясно почему Vector128 становица хуже чем простой цикл (хотя возможно JIT делает loop unroll и за счёт этого получается обычный цикл быстрее)

Второй вариант я попробовал исключить, переключив режим проца в Turbo (специальной утилитой Asus), скорости чуть-чуть подросли (буквально на 4-5%), но тренды не поменялись.

С ushort ситуация выглядит другим образом - самым быстрым практически везде является Vector128<ushort> 😳 однако разрыв по скорости в разы - только <=2048 элементов (4 КБ данных), дальше разрыв крайне незначительный.

gist_int gist_ushort #sse #simd #dotnet
Очень простой пример реализации паттерна Mediator :)
Не идеальный с точки зрения красоты кода (особенно в районе метода AddMediator), но функциональный и понятный.

#dotnet
🔥2
Имел неосторожност опубликовать в mastodon вопрос про SIMD - там где Vector128 был медленее Vector256, на что пришёл Alexandre Mutel (Director C#/.NET Tech Group at Unity) и потыкал меня носом в разные места этого кода. После чего он родил статью "10x Performance with SIMD Vectorized Code in C#/.NET"

#dotnet #simd #sse
👍7
Йее 100 подписчиков :)
🔥8👍3🤯1
Маленькие хитрости #docker - как подождать пока postgres (или любой другой сервис) придёт в норму после старта. У Postgres к примеру это занимает несколько секунд на холодный старт (=инициализация контейнера с созданием БД)
повнимательней господа, Moq апдейтнул версию и подключил либу SponsorLink, которая делает разное.

тред на Reddit

Альтернативы
* https://github.com/nsubstitute/NSubstitute
* https://fakeiteasy.github.io/
Forwarded from devdigest // dot net
⚠️ Moq получает ваш адрес электронной почты!

Moq, начиная с версии 4.20, включает в себя анализатор .NET, который сканирует вашу локальную конфигурацию git при сборке, получает ваш адрес электронной почты и отправляет его в какую-либо службу, размещенную в Azure, чтобы проверить, действительно ли вы спонсор.

🔗 https://devdigest.today/goto/2260

👉🏻 Наш канал | 💬 Наш чат
Please open Telegram to view this post
VIEW IN TELEGRAM
Чятики принесли отличную книгу на 114 страниц в PDF "What every programmer should know about memory".

Там действительно все что надо бы знать про low level память и кэш.
This media is not supported in your browser
VIEW IN TELEGRAM
Introduction of CSS transforms - я не знал что такое можно делать чисто на CSS :) #css
An introduction to graph theory
(Darij Grinberg, 2023 год, 422 страницы PDF) #books
👍2
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию - для начинающих самое то (на русском языке)
👍41🔥1
Кто-то где-то спрашивал, где бесплатно захостить приложение, вот вспомнилось
https://fly.io/docs/about/pricing

#hosting
🔥2
нейронка SeamlessM4T для перевода text-text/text-speech/speech-text/speech-speech, есть ссылка на гитхаб #ai
Onova is a lightweight auto-update framework for desktop applications (github) - интересный фреймворк для автообновлений софта под Windows. Умеет тянуть файлы с любого вебсервера, github релизов, из nuget и из других мест. #dotnet
This media is not supported in your browser
VIEW IN TELEGRAM
Удобный (вроде бы) сервис JSONHERO для ковыряния JSON-ов в онлайне.

Я, правда, обычно использую https://jsonviewer.stack.hu
👍2
Про использование ArrayPool<T> и перф. На картинке tldr, но советую прочитать всю статью.

#dotnet
👍1