Скачать Оптимизация Go, как в BigTech [Balun Courses]

Fargo

Администратор
Регистрация
2 Дек 2015
Сообщения
233.559
Реакции
755.725
**Складчина: Оптимизация Go, как в BigTech [Balun Courses]**

Проблемы, которые решает курс:
1. Сложности с разбором perf-снимот и кода в сторонних библиотеках на Go.
2. Неуверенность в оптимизации кода из-за недостатка знаний о его исполнении за пределами синтаксиса.
3. Желание заниматься более сложными и низкоуровневыми задачами, а не только простыми фичами.
4. Понимание исходного кода на Go и языка/архитектуры компьютера.
5. Подготовка к собеседованиям в BigTech, где спрашивают о внутреннем устройстве Go и Computer Science.

За 5 недель на практике вы научитесь:
1. Понимать computer science для работы в BigTech и исполнение кода от синтаксиса до машинных инструкций.
2. Изучать архитектуру операционных систем и применять операции вызова и системы.
3. Использовать ассемблер в Go для языковых оптимизаций.
4. Оптимизировать код с примерами от bigtech-компаний и низкоуровневого программирования.
5. Глубоко исследовать low-level пакеты: unsafe и runtime, reflect и debug.
6. Применять профайлер для оптимизации CPU, памяти и блокировок.
7. Повышать свою ценность и ЗП как специалиста в компании.

*Программа курса:*
### Основы Computer Science. Часть 1

#### Урок №1 – Микроархитектура процессора
- Внутреннее устройство компьютера: ISA, модели разделения памяти, организация чипсетов.
- Внутреннее устройство процессора: архитектура CPU, конвейер процессора, предсказывание переходов, устройство регистров, типы команд и другие.

#### Урок №2 – Оперативная, кеш память
- Внутреннее устройство кеша процессора: кеш линии, политики кэширования, уровни кэша и другие.
- Внутреннее устройство оперативной памяти: Memory endian, Page tables, Hierarchical page tables, трансляция адресов и другие.

**Результат:** Понимание Computer Science и ускорение кода через глубокое понимание его исполнения.

### Основы Computer Science. Часть 2

#### Урок №3 – Архитектура операционных систем
- Введение в операционные системы, ASMP, SMP, User space, Kernel space и прерывания.

#### Урок №4 – Управление памятью в операционке
- Механизмы управления памятью, Memory ordering, Barriers, Memory mapped files и другие аспекты.

**Результат:** Понимание Computer Science и ускорение кода через глубокое понимание его исполнения.

**Домашнее задание:** Написать программы, использующие syscalls и создать каналы в Go через syscall pipe.

### Неделя 3
### Ассемблер в GO и работа со стеком

#### Урок №5 – введение в ассемблер Go
- Введение в ассемблер Go: типы инструкций, кроссплатформенность, адресации и другое.

#### Урок №6 – инструкции работы со стеком
- Стек программы: инструкции, локальные переменные, соглашения вызова функций и другие.

**Результат:** Понимание трансляции программы в ассемблерный код и написание собственных программ на ассемблере.

**Домашнее задание:** Написать программу на ассемблере Go.

### Неделя 4
### Дополнительные фишки оптимизации, кодинг бенчмарков

#### Урок №7 – устройство памяти в Go, бенчмарки
- Устройство памяти в Go: аллокаторы, арены, scavenger, мусор и сравнение с другими языками.
- Бенчмарки в Go: виды, написание и конкурентные программы.

#### Урок №8 – оптимизации в Go
- Устройство Go: Escape analysis, оптимизации и работа с пакетами unsafe и reflect.

**Результат:** Понимание внутреннего устройства рантайма и применение оптимизаций в Go.

**Домашнее задание:** Написать свою реализацию RPC через рефлексию Go и применить оптимизации через unsafe пакет.

### Неделя 5
### Рантайм в Go и профилирование

#### Урок №9 – управление внутренним состоянием рантайма Go
- Управление рантаймом Go: пакет runtime, debug, фрагментация, сборка мусора и решения проблем.

#### Урок №10 – профилирование в Go
- Профилирование в Go: типы, работа с профилировщиком и накладные расходы при профилировании.

**Результат:** Оптимизация и профилирование приложений в Go.

**Домашнее задание:** Написать свой микросервис с CGO, профилирование и использовать PGO.
 
Сверху