Дайджест статей для Go-разработчиков ⭐️
Собрали для вас мини-подборку материалов, , которые помогут быстро прокачаться и закрыть актуальные задачи 👇
🔴Ускорение вычислений в алгоритме DRS-виртуализации через векторизацию
🔴Погружение в eBPF и XDP вместе с Go
🔴Черная магия unsafe в Go: практические примеры и ошибки использования. Часть 1 и часть 2
🔴Особенности и ловушки модели памяти в Go: тайны синхронизации. Часть 1 и часть 2
Сохраняйте, чтобы не потерять ⚡️
Собрали для вас мини-подборку материалов, , которые помогут быстро прокачаться и закрыть актуальные задачи 👇
🔴Ускорение вычислений в алгоритме DRS-виртуализации через векторизацию
Переписать решение с Python на Go и получить ускорение в 35 раз — звучит приятно. Но можно ведь пойти дальше, вспомнить о возможностях современных процессоров и увеличить отрыв Go до 200 раз! Игорь Вагулин, тимлид департамента IaaS в Cloud.ru, на примере алгоритма DRS-платформы рассмотрел, как он может быть решен на разных версиях операций с плавающей точкой процессоров x86 и Arm, в чем сложности задействования SIMD-операций, почему это сложнее на Go и как это обойти.
🔴Погружение в eBPF и XDP вместе с Go
Технология eBPF у всех на слуху, но написать свой инструмент и получить все выгоды от eBPF не так просто из-за недостатка информации.
Дмитрий Самохвалов, архитектор в компании К2Тех, рассказал, как он и его команда пришли к работе с eBPF и показал как начать работу с eBPF, используя Go, на примере написания своего XDP-фильтра.
🔴Черная магия unsafe в Go: практические примеры и ошибки использования. Часть 1 и часть 2
В стандартной библиотеке Go есть пакет с отпугивающим названием «unsafe». Но он может быть реально полезен! Владимир Балун, основатель balun.courses и it-interview.io, в статье рассказал о том, как использовать его надежно и эффективно. А также написал, как можно создавать срезы без дорогостоящей инициализации, научиться избавляться от Bound Checks и конвертировать строки в срезы и обратно без лишних копирований и аллокаций памяти.
Черную магию оставили на десерт, чтобы с ее использованием посмотреть, как можно проехаться по памяти для анализа сложных структур данных, модифицировать иммутабельные строки в Go и получать доступ к приватным полям структур.
🔴Особенности и ловушки модели памяти в Go: тайны синхронизации. Часть 1 и часть 2
Большинство программистов, работая с многопоточным кодом, осведомлены о примитивах синхронизации. При этом мало кто задумывается о существующей за этим сложной теории. Игорь Панасюк из Яндекса рассказал в своей статье про Go Memory Model, объяснил отношение happens before, а также затронул формализм и разберу его на практических примерах.
Сохраняйте, чтобы не потерять ⚡️