El compilador toma sus decisiones en base al análisis de código estático, mientras que si lo hace como dice don, está llevando a cabo un análisis dinámico que puede llegar mucho más lejos. El número de llamadas a una pieza específica de código a menudo está determinado en gran medida por el contexto en el que se utiliza, p. los datos. Perfilar un conjunto típico de casos de uso hará esto. Personalmente, reúno esta información al permitir la creación de perfiles en mis pruebas automáticas de regresión. Además de forzar en línea, he desenrollado bucles y llevado a cabo otras optimizaciones manuales sobre la base de dichos datos, con buenos resultados. También es imprescindible volver a perfilar después, ya que a veces sus mejores esfuerzos pueden llevar a una disminución del rendimiento. De nuevo, la automatización hace que esto sea mucho menos doloroso.
Sin embargo, la mayoría de las veces, en mi experiencia, ajustar alogoritmos da mejores resultados que la optimización de código directo.
En caso de ser la respuesta arriba;) – aaronsnoswell