Upload
ontico
View
296
Download
1
Embed Size (px)
Citation preview
Перед началом оптимизационных работ• Понять, что есть проблема• Определить метрики и поставить задачи• Научиться измерять эти метрики• Убедиться в корректности измерений• Найти узкое место• Подумать
О чём стоит подумать сначала• Грамотное масштабирование• Разумный параллелизм• Хорошая архитектура• Эффективные алгоритмы• Правильные структуры данных• Вдумчивое использование стандартных библиотек и
вашего любимого языка программирования• Аккуратная работа с памятью• I/O, Работа с сетью• …
Про что ещё стоит помнить?• Out-of-order execution• Reorder buffer in Sandy Bridge: 168, in Haswell: 192, in Skylake: 224
• Instruction Level Parallelism• SIMD
Мораль• Знать устройство компьютера — важно• Отсутствие знаний может стать источником проблем• Присутствие знаний может помочь сильно разогнать код
Андрей Акиньшин, JetBrainshttp://aakinshin.net
https://github.com/AndreyAkinshinhttps://twitter.com/andrey_akinshin