Executando verificação de segurança...
2

por que os compiiladores de C++ não possuem alguma diretriz para forçar inlining de algum método no matter what?

Forçar inline indiscriminadamente é impacta no cache de instruções e o aumento do tamanho do binário, pode acabar poluindo o cache de instruções (https://isocpp.org/wiki/faq/inline-functions#inline-and-perf).

Sobre os hotspots mudarem durante a execução, isso não costuma ser uma preocupação no contexto de C++, porque ela é geralmente escolhida para cenários onde sabemos que estamos lidando com rotinas CPU-bound e grandes volumes de dados. Nesses cenários, mesmo que surjam novas features, times experientes em C++ geralmente já estão espertos para identificar isso.

Carregando publicação patrocinada...
2

Forçar inline indiscriminadamente é impacta no cache de instruções e o aumento do tamanho do binário, pode acabar poluindo o cache de instruções

Sim, claro. Não estava sugerindo fazer inline de tudo. Isso obviamente é impraticável e é exatamente por isso que o JIT acaba levando vantagem. Minha sugestão foi:

O AOT não tem como saber os hot spots. O JIT tem, mas gasta tempo de runtime para descborir. Já o programador possui esse conhecimento, até melhor que o AOT e o JIT. Então ele (o programador) pegaria aqueles métodos que ele sabe que são quentes (hot) e anotaria eles com um @Inline para forçar que esses métodos, independente do tamanho deles, fossem inlined.

Por que o compilador de C++ ou Java não oferecem isso?