Содержание
- 2. Краткое содержание этой серии Фокусы Оптимизация компилятором
- 3. Фокус №1 Создаю глобальный двухмерный массив Заполняю его случайными числами Вычисляю сумму всех элементов: sum +=
- 4. Фокус №1 А как лежит в памяти двумерный массив? uint8_t array[2][4] = { {1,2,3,4}, {5,6,7,8}}; Точно
- 6. Все дело в кэш-памяти Зачем нужен кэш? Чтобы ускорить доступ к часто используемым данным, т.к. оперативная
- 7. А как работает кэш? Кэш состоит из «линий» (cache lines) - при каждом обращении в память
- 8. Кэш Вывод? Последовательный доступ к памяти гораздо быстрее, чем случайный. С точки зрения железа самая быстрая
- 9. Кэш В современных процессорах есть: кэш данных (D-cache) кэш инструкций (I-cache) буфер ассоциативной трансляции (TLB) Как
- 10. Кэш в современном процессоре Intel Core i7-9xx: L1 cache: 64 KiB L2 cache: 256 KiB L3
- 11. Кэш в современном процессоре Время чтения из памяти для Core i7-9xx: L1 - 4 такта. L2
- 12. Кэш Допустим, что два ядра процессора обращаются к одной и той же переменной. Тогда соответствующий кусок
- 13. Кэш Допустим, что два ядра процессора обращаются к двум разным переменным, которые расположены в памяти рядом.
- 14. Фокус №1.5 Возьмем неудачный способ сложения элементов массива (по столбцам). Логично предположить, что чем больше массив
- 15. Ассоциативность кэша А как узнать, закэширована переменная или нет? Кэш прямого отображения - каждый адрес памяти
- 16. Частично ассоциативный кэш Например, 16-входовой частично ассоциативный кэш – линии кэша делятся на 16 групп. Каждая
- 17. Кэш для инструкций Линейный код (без переходов) выполняется быстрее Маленькие программы (которые целиком помещаются в кэш)
- 18. Выводы При оценке быстродействия алгоритма нужно помнить про кэш. Писать быстродействующие программы – это сложно. Тестировать
- 19. Фокус №2 Вариант А: Заполним одномерный массив случайными элементами. Много раз найдем сумму всех элементов больше
- 20. Предсказание переходов Ключевой момент: if (data[c] >= 128) sum += data[c]; Если массив отсортирован – то
- 21. Оптимизация Критерии оптимизации: по объему кода (бинарного файла) по скорости исполнения Иногда можно (и хочется) оптимизировать
- 23. Скачать презентацию