Небезызвестная "The death of optimizing compilers" -- а есть ли запись выступления где-нибудь на Youtube? Предвкушаю, что оно феерично! 😄
Большое спасибо!
Это, всё-таки, скорее наброс в известном стиле "крутой пожилой профессор пересматривает основы", поэтому название совершенно не отражает содержание, которое, если "в двух словах":
1. Код разделился на hot & cold, что связано с большими объёмами данных, которые пропускаются через системы. А объёмы данных связаны с тем, что они реально лимитированы терпением конечных пользователей к тормозам (есть диалектическая пара - "производительность компа" и "объём данных, которые через него будут пропускать). Очень важно знать, какой кусок программы cold, какой hot.
2. Ручные оптимизации работают значительно лучше компиляторных, поскольку человек понимает, какие данные с какой вероятностью могут проходить через систему. А передать компилятору эти знания не может.
3. Автор подмечает, что разработчик алгоритма и компилятор работают в связке, пытаясь создать как можно более ... код на целевой машине. Как правило, разработчик алгоритма правильно оценивает сложность алгоритма, но! Если программа мигрирует в сторону более параллельных машин, то изначальные оценки даже сложности алгоритма могут быть неверны (это, кстати, ещё проявляется на кешах).
В данном случае, компилятор знает многое о машине, но рассказать разработчику не может.
4. Резюме - компилятору и разработчику нужен диалог. И этот диалог надо вести на одном языке.