Programación de computadoras: ¿Qué quiere decir la gente al decir que algo es una ‘implementación eficiente’?

Así como el mundo físico tiene recursos escasos que necesitan ser administrados eficientemente (tiempo, dinero, comida, tierra, etc.), también las computadoras tienen recursos limitados. Al escribir un programa de computadora, los recursos que más nos interesan son:

  • CPU : este recurso afecta el tiempo que nuestro programa tarda en hacer su trabajo. El uso eficiente de la CPU significa una ejecución más rápida de los programas.
  • RAM : estos recursos afectan el espacio que nuestro programa puede usar para hacer su trabajo. Impone una fuerte restricción: tienes suficiente para hacer tu trabajo o no. Si no lo hace, su programa no puede hacer su trabajo. El uso eficiente de la RAM da como resultado programas que pueden hacer su trabajo.
  • Disco: almacenamiento físico a largo plazo. Este es un recurso que limita el tiempo y el espacio . Espacio porque solo hay una gran cantidad de él, y una vez que lo usa, su programa se riega. Tiempo porque leer y escribir en el disco lleva tiempo, por lo que los programas eficientes minimizan la cantidad de “aciertos” (lecturas y escrituras) en el disco.
  • Red (opcional): no todos los programas son parte de un sistema distribuido, pero si su programa se está comunicando con otra máquina, entonces deberá administrar eficientemente la E / S de su red. Enviar y recibir información a través de una red suele ser muy lento (en relación con el disco o especialmente la RAM), por lo que es otro recurso que limita el tiempo . Los programas eficientes limitan el número de solicitudes de red.

Una implementación eficiente de un programa hace un uso juicioso de estos recursos, en relación con otras implementaciones potenciales de la misma tarea. Por ejemplo, los algoritmos de clasificación eficientes limitan el número de comparaciones entre elementos para reducir el uso de la CPU, o limitan el número de elementos que se ordenan a la vez para reducir la RAM. A menudo, se trata de compensaciones dependiendo de qué recursos son más escasos en su entorno. Pero en algunos casos, hay implementaciones que usan los cuatro recursos mejor que otros, y allí podemos decir fácilmente que una implementación es más eficiente que la otra.

Un programador pobre podría necesitar cientos de líneas de código para lograr algo que un buen programador hace en treinta. Mientras se haga el mismo trabajo, el programa corto será más eficiente y más fácil de entender y mantener (que también son medidas de eficiencia).

More Interesting

¿Cómo se vería el algoritmo para la combinación óptima de 3 valores en Python?

¿Hay otros recursos como el radar de tecnología ThoughtWorks?

¿Cuáles son algunos sistemas de software heredados malos que se beneficiarían de una reescritura completa?

¿Cuál es la importancia del software en el comercio?

Cómo realizar pruebas de API

¿Nos dirigimos al "código de pico"?

¿Dónde puedo encontrar listas de software accesible, por ejemplo, la Sección 508, etc., preferiblemente agrupadas por propósito?

¿Los ingenieros de software de Silicon Valley dibujan diagramas antes de codificar o saltar y codificar?

¿Cuáles son los problemas abiertos en la estimación del esfuerzo de desarrollo de software? ¿Qué métodos se practican actualmente en las empresas con el fin de estimar el esfuerzo? ¿En qué se diferencia la estimación ágil de otros enfoques de estimación tradicionales?

¿Cuál es la mejor manera de abordar la lectura del código fuente para una biblioteca de JavaScript?

¿Cuáles son algunos principios para construir servicios de almacenamiento en caché?

¿Cuál es la mejor manera de trabajar en máquinas remotas como desarrollador y experto en CS?

Cómo calcular el caso de negocio para realizar la gestión de la configuración en un proyecto de desarrollo de software

¿Existe un servicio web que proporcione tasas de conversión de moneda por hora / día precisas?

Documentación: ¿Por qué no hay más desarrolladores que escriban manuales mejores y más completos?