Creo que los compiladores usan algún tipo de heurística para decidir si alinean o no una función.
Si se llama a la función desde un solo lugar, al alinearla se pueden reducir algunas instrucciones y ciclos, mejorando el tamaño y la velocidad.
Si se trata de una función pequeña, la alineación puede hacer lo mismo.
Si la función se llama en un circuito cerrado muchas veces, la alineación puede mejorar el rendimiento.
Al mismo tiempo, la alineación puede dar como resultado un código más grande en general y también puede tener algunos efectos negativos en el rendimiento debido al almacenamiento en caché de más código.
Los compiladores intentan hacer elecciones óptimas, pero también deben tener en cuenta cosas como opciones de optimización configurables (el programador puede decir que prefiere la velocidad sobre el tamaño o el opuesto) y cuánto tiempo les tomaría para tomar estas decisiones y generar el código (no desea que el compilador optimice mucho todo y tome muchas horas o días adicionales para compilar su código). Hay compensaciones.
Además, los compiladores no son todopoderosos.Simplemente no pueden juntar ciertos pares de personas, no porque sea caro, sino porque es casi imposible. Esta es la razón por la que hacemos pruebas de rendimiento y carga, tenemos perfiladores y hacemos que los humanos escriban código porque los humanos todavía son generalmente más inteligentes que sus programas.
Puede valer la pena mencionar si tiene un compilador particular en mente, ya que hay indicadores que puede usar para influir en las decisiones del compilador. – Tom
Para el compilador de microsoft: http://stackoverflow.com/questions/1204975/does-the-compiler-decide-when-to-inline-my-functions-in-c/1204980#1204980 – Tom
Si ha solicitado inline es no es uno de los factores más importantes. –