В Go есть возможность получить отчёт о выполняемом escape-анализе: go build -gcflags '-m=3 -l'
. В этой статье я расскажу, как можно визуализировать этот отчёт в VS Code. Дополнительно приведу способ, как в несколько кликов проверить теорию (escape-анализ) практикой (профилирование).
Пользователь
От Isolation к Consistency — дорога длиной в 30 лет
Участвую в стартапе, в котором разрабатывается СУБД нового типа (работает поверх некоторых kv-движков, кардинально расширяя их возможности, про это немного можно прочитать здесь). Для того, чтобы сравнить то, что понемногу получается, с тем, что имеется в индустрии, пришлось на глубоком уровне проработать первоисточники по темам Isolation и Consistency (уточню, что имеется ввиду не та Consistency
, что в ACID
). Обнаружил интересные нюансы, которые и излагаю в этой статье.
Тезисно:
- Термин Phantom Read является продуктом испорченного телефона
- Смысл понятий Lost Update, Write Skew и Read Skew для разделения уровней изоляций неочевиден и относителен
- Движок, который обеспечивает уровень изоляции Serializable, в распределённом мире может вести себя весьма причудливо, например, всегда возвращать пустой результат для read-only транзакций — и ему за это по стандарту "ничего не будет"
- Strong consistency в Cosmos DB — предел мечтаний? (спойлер: нет)
Ну, и ещё кое-что по мелочи. В конце рассмотрим вот такой венец творения человеческого разума:
Go против Rust — производительность вне конкуренции
В статье Наблюдение за выполнением конкурирующих задач в Go и Rust коллега cpmonster привёл весьма интересные результаты:
Программа на Rust показала намного большую производительность при вычислении членов возвратной последовательности, чем программа на Go: 367 млн. итераций в секунду против 44 млн.
Ну, в 1.5 раза… Ну, в 2 раза… Но семь гвардейцев за два дня? — это слишком, тем более что тут "гвардейцев" больше восьми!
Или нет, не слишком? В общем, потенциал любопытства пересилил другие потенциалы и я провёл своё исследование.
Замыкания в Rust
- Предыдущая часть: Заменяем глобальный аллокатор
- Начало и содержание: Владение
Заменяем глобальный аллокатор в Rust
Вторая часть про работу с кучей, устанавливаем свой глобальный аллокатор. В принципе, это делается в несколько строк, но наша цель — действовать сознательно и профессионально, с глубоким проникновением в суть явлений, так что легкой жизни не будет (как и обещал).
- Предыдущая часть: Работа с кучей в Rust
- Начало и содержание: Владение
Работа с кучей в Rust
Продолжаем изучать Rust нетрадиционным способом. В этом раз будем разбираться в нюансах работы с кучей, для их понимания понадобятся: сырые указатели, выделение памяти в куче, размер экземпляра типа, запись значений в кучу и чтение из нее, const и static, unit-like структуры, переопределение глобального аллокатора.
Это, определенно, overkill для одной статьи, а вот половину списка вполне можно освоить.
- Предыдущая часть: Времена и структуры
- Начало и содержание: Владение
Конспектируем Книгу Rust:: Времена и структуры
Продолжаем работать с 10.3.
КМБ.- Двойная жизнь.- Восстание мертвецов.- Ошибка в документации.- Ужасающие подробности из The Rustonomicon.- Архитектурные озарения.- Развязка.
- Предыдущая часть: Времена и функции
- Начало и содержание: Владение
Конспектируем Книгу Rust:: Времена и функции
После главы 4 (было здесь) переходим к 10.3. Валидация ссылок при помощи времён жизни. Ну а куда еще… такие нынче времена.
Конспектируем Книгу Rust:: Владение
Перед вами краткое профессиональное описание особенностей языка Rust для профессионалов.
- краткое — информации будет гораздо меньше, чем в Книге (The Rust Programming Language)
- профессиональное — информации будет гораздо больше, чем в Книге;
- описание особенностей — фокусируемся на отличиях Rust от других языков;
- языка — описывается именно язык, а не установка средств разработки, управление пакетами и прочий инструментарий;
- для профессионалов — подразумевается, что читатель имеет существенный опыт в разработке ПО.
Чего здесь НЕ будет
- Не будет агитации за Rust
- Не будет легко. Для освоения потребуется неделя-другая вдумчивого чтения по часу в день, с тщательным разбором примеров, как-то так
Содержание
Велосипед, зима и Санкт-Петербург — настало время сказочных историй
![](https://habrastorage.org/getpro/habr/upload_files/415/9ae/118/4159ae118b6a72b84669ae7f7281be12.gif)
Северная столица в плане погодных условий вполне пригодна для поездок на велосипеде в зимний период. Но предварительно нужно победить дракона, прогнать жабу и еще понадобятся две волшебные спички.
Охота за убегающей памятью в Go на этапе разработки
В начале этого года я прочитал на habr любопытную статью "Почему Discord переходит с Go на Rust", переход был связан с неэффективным механизмом сборки мусора в Go. Тогда подумалось, что, наверное, было бы проще доработать приложение и не переходить. Но еще проще было бы избежать таких проблем на стадии разработки.
Как научиться кататься на моноколесе?
Подумав хорошенько, я решил, что справлюсь с этим делом. Тогда я пошел и купил бутыль свинцовой примочки и велосипед. Домой меня провожал инструктор, чтобы преподать мне начальные сведения. Мы уединились на заднем дворе и принялись за дело.
Марк Твен. Укрощение велосипеда
Выбор моноколеса для поездок на работу
![](https://habrastorage.org/webt/e9/cl/y0/e9cly08zt-gd2lymaikewwuayjo.jpeg)
Автор рисунка — Дед62@electrotransport.ru
Прошла весна, настало лето, –
Так не пора ли сделать это?
Или еще не пора? А если пора, то какое выбрать моноколесо для поездок на работу?
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity