¿Cuáles son las ventajas de escribir código con un tiempo de ejecución mínimo?

Según la ley de Moore, el número de transistores de chips de CPU se duplica cada 18 meses. En este momento, la velocidad de la CPU en sí no se duplica necesariamente, sino más bien la cantidad de núcleos y otras cosas como un mejor almacenamiento en caché, etc.

Ahora, hagámoslo simple y digamos que la velocidad de la CPU se duplica o incluso se cuadruplica cada 18 meses, aunque sabemos que este no es el caso.

Ahora, un problema del mundo real en la actualidad podría involucrar fácilmente a cientos de millones o miles de millones de datos de entrada.

Digamos que su CPU puede ejecutar mil millones de instrucciones por segundo. Ahora, hoy, su código que lee 1 millón de entradas y calcula algo en tiempo O (n ^ 2) tomará 1,000,000,000,000 / 1,000,000,000 = 1000 segundos = 16.6 minutos .

¡En 18 meses, con la duplicación de la velocidad de la CPU, el aumento de RAM, mejores mecanismos de almacenamiento en caché, etc., su código ahora puede ejecutarse cuatro veces más rápido! ¡Ahora eso lo reduce a unos 4 minutos ! Bastante impresionante, ¿eh?

O

¡Puede mejorar el algoritmo de su código y hacer que se ejecute en tiempo O (nlogn) y su código puede ejecutarse en 1,000,000 * log (1,000,000) / 1,000,000,000 = 0.006 segundos = 0.0001 minutos! ¡Hoy!

Ahora, ¿necesitamos algoritmos rápidos o no? Tú decides.

Aquí hay tres, wrt. diferentes escenarios:

Eficiencia energética
El uso de energía es la suma (integral) de energía a lo largo del tiempo, y cuando un procesador moderno no funciona a toda velocidad, en cambio reduce su uso de energía. En dispositivos de consumo portátiles, esto es ideal para la duración de la batería. Hay varias formas de ajustar el uso de energía, pero hacer que los programas completen sus tareas lo más rápido posible es claramente la más fácil y efectiva.

Requisitos en tiempo real
Algunos programas tienen limitaciones de tiempo. Para los servicios operativos, no tiene sentido, por ejemplo, calcular cómo será el clima de mañana si le lleva dos días averiguarlo. Incluso si algún programa de tamaños de problemas conocidos pero de gran tamaño no se encuentra en una fecha límite similarmente difícil, el tiempo de cálculo mínimo aún puede traducirse en una factura mínima de un proveedor de la nube o algo así.

Rendimiento
El trabajo de investigación intensivo en computación a menudo se asigna espacios de tiempo limitados en maquinaria costosa, y obviamente desea obtener la mayor cantidad de resultados de esa asignación que puedan obtener. Minimizar el tiempo para obtener un resultado es la forma obvia de maximizar cuántos puede obtener.

Estoy seguro de que hay más, el tiempo es dinero.

Um, obviamente todavía importa. Mis simulaciones todavía tardan 10 horas en completarse a pesar de no estar vinculadas a la memoria.

Corre mas rapido.

Supongamos que compró o instaló algún software, como una actualización del sistema operativo o un editor de texto. Funciona muy lentamente en su computadora portátil de 1 año y ocupa todos los recursos del sistema. Te pones en contacto con la empresa al respecto y te dicen que solo debes comprar más RAM o una computadora más rápida. Me imagino que estarías desagradable.

More Interesting

¿Cuáles son algunos acertijos interesantes que se hacen en las entrevistas técnicas de programación informática?

¿Cuáles son los acertijos estándar que se preguntan en las entrevistas de programación?

¿Por qué se hacen preguntas sobre la estructura de datos en las entrevistas integradas en las empresas indias?

Le dije a mi reclutador que me gustaría usar C ++ en mi entrevista técnica para un puesto de ingeniero de software general. Dado que la compañía también usa Java, ¿está bien cambiar de idioma durante la entrevista, dependiendo de la pregunta, si es más claro / más rápido para la pizarra?

¿Cuáles son las preguntas de entrevista más comunes por teléfono?

¿Cómo se puede obtener un puntaje de 3+ de manera consistente en cada ronda de entrevistas de Google?

Cómo actuar en una entrevista cuando no sé nada técnico

Cómo prepararme para una entrevista para un puesto de diseñador de juegos

¿Cuál es la mejor / (o peor) pregunta de la entrevista que le hayan hecho o que le hayan pedido un trabajo de programación o una pasantía (o una que esté poco relacionada con CS)?

¿Cuál es la forma más rápida de encontrar todos los posibles pares primos en una matriz determinada?

¿Resolver preguntas sobre el Proyecto Euler es una buena forma de practicar para programar entrevistas?

¿En qué se diferencian las preguntas de la entrevista de programación de los problemas en Codeforces, CodeChef, TopCoder, etc.? Para una entrevista, ¿ayudaría resolver los problemas de estos sitios o debería uno centrarse en las diversas preguntas de la entrevista disponibles?

¿Qué es una biblioteca de entrada / salida?

¿Cuáles son las preguntas más comunes que se hacen en las entrevistas para IAS?

Quiero prepararme para trabajos de programador / desarrollador para enero o febrero de 2017. ¿Cómo debo asignar tiempo eficientemente si actualmente trabajo a tiempo completo?