У меня есть система (Linux & C ++) делает интенсивные операции обработки сигналов / изображений. Я хотел бы использовать PGO для улучшения производительности нашего приложения.
Есть ли какие-либо риски / потенциальные проблемы, о которых я должен знать при использовании PGO?
Достаточно ли юнит-тестов + E2E-тестов, чтобы убедиться, что PGO ничего не сломал?
У Microsoft есть система, которая модифицирует условные переходы на основе статистики использования, плюс она конденсирует часто используемые фрагменты кода в меньшее количество страниц. Это существенно уменьшает объем занимаемой памяти в несколько раз и снижает потребление ресурсов процессора на 20-50%.
Эта система широко использовалась как в пользовательском, так и в режиме ядра. Качество этой системы было очень высоким. В 100% случаев он делал свою работу правильно. Я не вижу даже незначительных недостатков.
Может случиться, что какая-то другая подобная система может быть менее надежной, чем система Microsoft. Тот от Microsoft был чрезвычайно хорош.
Других решений пока нет …