Можно ли обогнать по производительности стандартные структуры данных из пакета atomic? Попытка дать ответ в видео
www.youtube.com/watch?v=9CFbBoMvl48
#golang
www.youtube.com/watch?v=9CFbBoMvl48
#golang
Если вам было интересно - на какие концепции опирается Docker и как под капотом устроены контейнеры, то вот отличное видео, где за двадцать минут в режиме live coding'а докладчик создает собственную реализацию контейнеров с изоляцией процессов и файловой системы от родительской ОС
https://www.youtube.com/watch?v=HPuvDm8IC-4
#golang #docker
https://www.youtube.com/watch?v=HPuvDm8IC-4
#golang #docker
YouTube
Golang UK Conf. 2016 - Liz Rice - What is a container, really? Let's write one in Go from scratch
Everyone has heard of Docker, but what is a container? Is it really "a lightweight VM"? In this talk we'll dispel the magic by writing a container in about 100 lines of Go.
👍1
Изящное решение проблемы фризов из-за работы GC в Go от сотрудников Twitch
https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/
#golang
https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/
#golang
blog.twitch.tv
Go memory ballast: How I learnt to stop worrying and love the heap
I’m a big fan of small code changes that can have large impact. This may seem like an obvious thing to state, but let me explain:
👍2
Как работает pdqsort в Golang - алгоритм сортировки, позволяющий избежать худшего случая для quicksort
https://itnext.io/gos-new-sorting-algorithm-pdqsort-822053d7801b
#golang
https://itnext.io/gos-new-sorting-algorithm-pdqsort-822053d7801b
#golang
Medium
Go’s new sorting algorithm: pdqsort
Understand the new sorting algorithm Go started using and how it differs from regular the Quicksort.
Бэкендошная
Как работает pdqsort в Golang - алгоритм сортировки, позволяющий избежать худшего случая для quicksort https://itnext.io/gos-new-sorting-algorithm-pdqsort-822053d7801b #golang
Коммит по внедрению pdqsort - https://github.com/golang/go/commit/72e77a7f41bbf45d466119444307fd3ae996e257
#golang
#golang
GitHub
sort: use pdqsort · golang/go@72e77a7
- Across all benchmarks, pdqsort is never significantly slower than the previous algorithm.
- In common patterns, pdqsort is often faster (i.e. 10x faster in sorted slices).
The pdqsort is describ...
- In common patterns, pdqsort is often faster (i.e. 10x faster in sorted slices).
The pdqsort is describ...
На примере сортировок разбираемся - когда увеличение распараллеливания вычислений не приводит к увеличению производительности
https://convey.earth/conversation?id=44
#golang
https://convey.earth/conversation?id=44
#golang
Привет!
Сегодня я принес вам доклад про Best Practise разработки на Golang.
Докладу уже более 4х лет, но он все еще не теряет актуальности
https://www.youtube.com/watch?v=MzTcsI6tn-0
#golang
Сегодня я принес вам доклад про Best Practise разработки на Golang.
Докладу уже более 4х лет, но он все еще не теряет актуальности
https://www.youtube.com/watch?v=MzTcsI6tn-0
#golang
YouTube
Ashley McNamara + Brian Ketelsen. Go best practices.
https://talks.bjk.fyi/bketelsen/gcru18-best#/
Если вы хотели начать контрибьютить в open source, но не могли найти подходящий проект, то данный репозиторий может стать отличным подспорьем в этом начинании.
В нем собраны различные issue по проектам на разных языках программирования, которые подходят в качестве вашего первого коммита в open source
https://github.com/MunGell/awesome-for-beginners
#opensource #golang #rust #php
В нем собраны различные issue по проектам на разных языках программирования, которые подходят в качестве вашего первого коммита в open source
https://github.com/MunGell/awesome-for-beginners
#opensource #golang #rust #php
GitHub
GitHub - MunGell/awesome-for-beginners: A list of awesome beginners-friendly projects.
A list of awesome beginners-friendly projects. Contribute to MunGell/awesome-for-beginners development by creating an account on GitHub.
👍1
Привет!
Неделю назад я делился лучшими практиками разработки на Golang.
Сегодня делюсь его антиподом - докладом про худшие практики разработки на Golang
https://www.youtube.com/watch?v=Jns0QgJtAYY
#golang
Неделю назад я делился лучшими практиками разработки на Golang.
Сегодня делюсь его антиподом - докладом про худшие практики разработки на Golang
https://www.youtube.com/watch?v=Jns0QgJtAYY
#golang
YouTube
Golang Worst Practices - Oliver Powell
This event is brought to you by Go Singapore. GoSG is a meetup for the Go programming enthusiasts in Singapore.
Name: Oliver Powell
Topic: Golang Worst Practices
Evolutionary biology teaches us that the avoidance of failure is a better strategy than the…
Name: Oliver Powell
Topic: Golang Worst Practices
Evolutionary biology teaches us that the avoidance of failure is a better strategy than the…
Если вы разрабатываете на Golang, то наверняка знаете о возможности вызова C-кода из программ на Golang через CGO
Но что если есть потребность в транспиляции C-кода в Golang для дальнейшего развития?
Для этого есть полноценная утилита - CCGO.
И основной вопрос, который возникает после подобной манипуляции - насколько полученный код на Golang будет сопоставим по скорости с CGO или даже с чистым C
Автор статьи провел эксперимент, в котором сравнил производительность кода на чистом C, CGO и результата от транспиляции через CCGO.
И его результаты могут вас удивить
https://blog.nobugware.com/post/2022/surprising-result-while-transpiling-go/
#golang #clang
Но что если есть потребность в транспиляции C-кода в Golang для дальнейшего развития?
Для этого есть полноценная утилита - CCGO.
И основной вопрос, который возникает после подобной манипуляции - насколько полученный код на Golang будет сопоставим по скорости с CGO или даже с чистым C
Автор статьи провел эксперимент, в котором сравнил производительность кода на чистом C, CGO и результата от транспиляции через CCGO.
И его результаты могут вас удивить
https://blog.nobugware.com/post/2022/surprising-result-while-transpiling-go/
#golang #clang
Nobugware
Surprising result while transpiling C to Go - Fabrice Aneche
Experimenting transpiling Uber h3 library with ccgo.
Обширная статья Uber про выявленные шаблоны состояния гонки в микросервисах на Go
https://eng.uber.com/data-race-patterns-in-go/
#golang #microservices
https://eng.uber.com/data-race-patterns-in-go/
#golang #microservices
Несмотря на то, что Golang не замечен в высоком потреблении памяти, очень полезно понимать - как она расходуется вашим приложением и не происходит ли где-то избыточных аллокаций.
Часто, оптимизации требуют сложного рефакторинга, но иногда можно обойтись совсем незначительными изменениями, которые не потребуют много ресурсов от разработчиков.
Именно про такие примеры и пойдет речь в сегодняшней статье.
https://www.ribice.ba/golang-memory-savings/
#golang
Часто, оптимизации требуют сложного рефакторинга, но иногда можно обойтись совсем незначительными изменениями, которые не потребуют много ресурсов от разработчиков.
Именно про такие примеры и пойдет речь в сегодняшней статье.
https://www.ribice.ba/golang-memory-savings/
#golang
Обширная статья про некоторые неочевидные подводные камни Golang
Если вы уже знакомы с "50 Shades of Go" - это ее духовный наследник, который помимо всего приносит очень много новых ошибок новичка, на которые можно натолкнуться
https://rytisbiel.com/2021/03/06/darker-corners-of-go/
#golang
Если вы уже знакомы с "50 Shades of Go" - это ее духовный наследник, который помимо всего приносит очень много новых ошибок новичка, на которые можно натолкнуться
https://rytisbiel.com/2021/03/06/darker-corners-of-go/
#golang
Если ваше приложение на Golang активно использует память, то вам наверняка знакома проблема, связанная с частотой запуска GC, которая вызывает частые фризы из-за STW.
По умолчанию GC начинает работать при удвоении размера аллоцируемой памяти - это значит что при небольших значениях памяти и активном ее потреблении - GC будет запускаться чаще чем хочется и приложение будет чаще фризиться.
Несколько лет назад команда Twitch активно продвигала так называемый метод балласта - когда при старте приложения аллоцируется некий объем памяти, являющийся балластом и GC все-также срабатывает при удвоении памяти, но за счет балласта, старт его работы удается значительно отсрочить.
Но метод балласта не убережет вас от OOM так как рано или поздно - удвоение памяти приведет к попытке выхода за границы физической памяти.
Для того чтобы GC срабатывал не только при изменении потребления памяти, но при достижении определенных ее значений - в Go 1.19 был введен параметр GOMEMLIMIT который позволит сделать управление стартом GC более гибким и прозрачным.
Про опыт его использования и пойдет речь в сегодняшней статье
https://weaviate.io/blog/2022/08/GOMEMLIMIT-a-Game-Changer-for-High-Memory-Applications.html
#golang
По умолчанию GC начинает работать при удвоении размера аллоцируемой памяти - это значит что при небольших значениях памяти и активном ее потреблении - GC будет запускаться чаще чем хочется и приложение будет чаще фризиться.
Несколько лет назад команда Twitch активно продвигала так называемый метод балласта - когда при старте приложения аллоцируется некий объем памяти, являющийся балластом и GC все-также срабатывает при удвоении памяти, но за счет балласта, старт его работы удается значительно отсрочить.
Но метод балласта не убережет вас от OOM так как рано или поздно - удвоение памяти приведет к попытке выхода за границы физической памяти.
Для того чтобы GC срабатывал не только при изменении потребления памяти, но при достижении определенных ее значений - в Go 1.19 был введен параметр GOMEMLIMIT который позволит сделать управление стартом GC более гибким и прозрачным.
Про опыт его использования и пойдет речь в сегодняшней статье
https://weaviate.io/blog/2022/08/GOMEMLIMIT-a-Game-Changer-for-High-Memory-Applications.html
#golang
weaviate.io
GOMEMLIMIT is a game changer for high-memory applications | Weaviate
Go 1.19 introduced GOMEMLIMIT, which completely changes how you can manage memory limits in Go. Learn how it helps Weaviate be more reliable.
👍1
Статья про то, как можно быстро, при помощи фреймворка go-zero, сделать ваши gRPC-хэндлеры переиспользуемыми для REST-протокола без необходимости дублирования кода, при помощи декларативного описания и кодогенерации.
https://dev.to/kevwan/5-minutes-to-add-restful-apis-for-your-grpc-services-2dnl
#golang
https://dev.to/kevwan/5-minutes-to-add-restful-apis-for-your-grpc-services-2dnl
#golang
DEV Community
5 minutes to add RESTful APIs for your gRPC services
gRPC service with HTTP interface? While go-zero brought an excellent RESTful and gRPC...
Оптимизация объявления структур в Golang с точки зрения потребляемой памяти и процессорного времени
https://towardsdev.com/golang-writing-memory-efficient-and-cpu-optimized-go-structs-62fcef4dbfd0
#golang
https://towardsdev.com/golang-writing-memory-efficient-and-cpu-optimized-go-structs-62fcef4dbfd0
#golang
Medium
[Golang] Writing memory efficient and CPU optimized Go Structs
A struct is a typed collection of fields, useful for grouping data into records. This allows all the data relating to one entity to be…