¿Compilar vs usar el rendimiento de binarios preconstruidos?

11

¿El rendimiento será mejor (más rápido) si compilo manualmente la fuente de un componente de software para la máquina real en la que se utilizará, en comparación con si la fuente se compiló en otra plataforma, tal vez para muchas arquitecturas diferentes? Obtuve algunos buenos resultados al compilar la fuente que descargué y me pregunto si esto se debió a compilarlo en lugar de descargar un binario precompilado, que a menudo es el caso con las actualizaciones de software.

Niklas
fuente
2
La compilación para compatibilidad con muchas arquitecturas potencialmente elimina ciertas optimizaciones que pueden ser posibles al compilar para una sola arquitectura.
Robert Harvey
1
Además de ser más específico (lo que casi siempre será beneficioso), probablemente también encuentre grandes diferencias entre los compiladores: los diferentes compiladores admiten diferentes optimizaciones y, a veces, los cuellos de botella de rendimiento pueden ser optimizados por uno, pero no por el otro.
Daniel B

Respuestas:

8

En muchos (si no la mayoría) de los casos, sí. Esto se debe a que el compilador puede producir código nativo optimizado para esa CPU y entorno en particular. El código es más "dirigido".

epistemex
fuente
7

Compilar a partir de fuentes le brinda la ventaja de configurar los indicadores del compilador de la manera que desee para su plataforma específica. Descargar un paquete que se haya compilado con la misma configuración exacta que la suya no ofrecería ninguna diferencia, pero cambiar la configuración de los valores predeterminados puede obtener grandes mejoras.

Por ejemplo, si los binarios ofrecidos para la descarga se compilaron para la depuración (intencionalmente o por error), activar una optimización más agresiva mejorará el rendimiento en casi todas las situaciones. Por otro lado, si el código compilado está optimizado al máximo, no vería ninguna diferencia.

dasblinkenlight
fuente
Por lo tanto, mi esfuerzo de compilación podría no haber sido en vano. Descargué la fuente a mod_jk y la compilé, y se hizo muy rápido y me pregunto si eso se debió a la compilación manual. Gracias por la respuesta.
Niklas
1

Esto realmente depende de los dos compiladores y los indicadores de compilador utilizados. Por lo general, la configuración del compilador y la marca en su máquina local son más apropiadas para su máquina en particular si tiene las cosas configuradas correctamente.

Pero, si, por ejemplo, el binario precompilado se construye con un compilador de optimización mucho mejor (o un punto de referencia especial diseñado con banderas ajustadas para ese código en particular y por suerte apropiado para su sistema) en comparación con el compilador en su sistema, entonces es posible que cualquier compilador que esté en su sistema realmente produzca un peor rendimiento.

hotpaw2
fuente