¿Intel pierde la fe en las optimizaciones del compilador cuando llama a los programadores a hacer la optimización?

La optimización del compilador funciona a un nivel muy bajo. Dado lo que el programador ha instruido, encuentra varios métodos inteligentes para lograr un resultado eficiente. Por lo general, estos métodos son aquellos en los que el programador podría no pensar y, de hecho, podría no ser capaz de hacerlo, ya que pueden implicar el uso detallado de aspectos específicos del sistema.

Sin embargo, lo que la optimización del código no puede lograr es mejorar el enfoque (es decir, el diseño) utilizado para resolver el problema en cuestión. Un programador que considere adecuadamente los problemas de nivel superior puede mejorar enormemente las cosas simplemente al disminuir lo que se intenta en primer lugar.

Sospecho que Intel está reaccionando a la práctica de codificación generalizada de escatimar en el diseño (tanto bajo como alto nivel) y luego necesita agregar más (y más) recursos de hardware para lograr un sistema utilizable.

Definitivamente hay una compensación entre la codificación rápida versus la codificación más reflexiva. Durante un tiempo, el costo del tiempo humano se había considerado más alto que el hardware. Con las mejoras en la nivelación del rendimiento del hardware, no es sorprendente que el péndulo se balancee hacia el otro lado.

Nunca ha habido ninguna “fe perdida”. Los compiladores Forever y a day han sido buenos en ciertas optimizaciones de código (p. Ej., Asignación de registros, eliminación de código muerto, eliminación de subexpresión común) y los humanos en otras optimizaciones (volteando un algoritmo O (N ^ 2) a O (N) uno, o reconociendo que no se requiere un cálculo complejo gigante. Ha habido un “arte perdido” de escribir código que un compilador puede acelerar, principalmente porque toda una generación de programadores parece haber perdido la noción de un modelo de costo realista. Intel probablemente solo esté tratando de elevar el estado de la práctica antes de que realmente se convierta en un arte perdido.

Acantilado