Además de la complejidad de tiempo y espacio, ¿qué otras métricas de rendimiento deben tenerse en cuenta al medir el rendimiento de un algoritmo?

Métricas en teoría:

  • Lapso. Span es la complejidad temporal de un algoritmo paralelo en procesadores infinitos. ¿Qué tan bien se puede paralelizar el algoritmo? Distantemente relacionado está la aceleración teórica calculada por la ley de Amdahl, la aceleración máxima alcanzable en procesadores [math] p [/ math]. Ambos se refieren a la cantidad de cómputo secuencial intrínseco.
  • Relación competitiva La relación competitiva de un algoritmo en línea es la peor relación entre el costo del algoritmo en línea y el mejor algoritmo fuera de línea posible para resolver el mismo problema. Cuanto menor sea la relación, más óptimo será su algoritmo.
  • Aleatoriedad complejidad. Al analizar un algoritmo probabilístico de Monte Carlo, le interesaría cómo la aleatoriedad se escala como un recurso a medida que aumenta la cantidad de datos. O, cuánto tiempo de ejecución aumenta a medida que aumenta la tasa de precisión para los algoritmos de Las Vegas.
  • Rendimiento de aprendizaje. En los algoritmos de aprendizaje automático, le interesaría qué tan bien realiza la tarea que defina (precisión, área bajo la curva ROC, precisión, recuperación …).
  • Variación de tiempo de ejecución. Para los algoritmos de Las Vegas, puede interesarle con qué frecuencia los tiempos de ejecución alcanzan la complejidad de tiempo esperada. O, si está construyendo un sistema operativo en tiempo real, desea saber exactamente cuánto tiempo se ejecuta su algoritmo, lo que puede descartar arreglos / vectores rápidos o dinámicos (que tienen un rendimiento amortizado).

Métricas en la práctica:

  • Aceleración de la paralelización. Si tiene el hardware paralelo, úselo para su ventaja. ¿Cuánto más rápido va en comparación con un algoritmo secuencial? ¿Una implementación paralela existente?
  • Localidad y uso de energía. ¿El algoritmo necesita buscar a menudo desde el disco? De memoria no almacenada en caché? Estas operaciones tardan mucho más que acceder a los datos en su caché y consumen más energía.
  • Latencia y rendimiento. Puede considerar las compensaciones entre la latencia, la rapidez con que se puede producir una respuesta a los datos, frente al rendimiento, la cantidad de datos que se pueden procesar con el tiempo.
  • Complejidad de implementación. Si su algoritmo mejora una solución de [matemática] O (n ^ 2) [/ matemática] a [matemática] O (n \ log n) [/ matemática], pero realmente no ayuda mucho y toma 3 días más para implementar , podría considerar ahorrar tiempo y dinero para hacer otras cosas.

More Interesting

¿Cómo resuelvo esta pregunta SPOJ.com - Problema XOINC?

Entiendo cómo leer la recursividad pero no sé cómo resolverlos.

¿Se puede utilizar el aprendizaje automático para encontrar públicos objetivo para anuncios?

¿Utiliza el cerebro el algoritmo de propagación hacia atrás dado cómo se conectan las sinapsis secuencialmente?

Cómo saber si / cuándo puede aplicar la manipulación de bits para resolver un problema

¿Por qué utilizan la factorización principal para el cifrado en lugar de un algoritmo que hemos demostrado que es difícil de resolver?

¿Cuánto estrés se le da a los algoritmos y las estructuras de datos en el curso de pregrado en CMI? ¿Se enseña programación competitiva allí?

Cómo comenzar a aprender o fortalecer mi conocimiento de estructuras de datos y algoritmos

¿Cómo funciona este algoritmo para encontrar los bordes del corte mínimo de un gráfico?

¿Qué puedo aprender ahora en solo 10 minutos que podría mejorar mi pensamiento algorítmico?

Procesadores de señal digital (DSP): cuando alguien escribe un archivo en una tarjeta SD usando un bus spi, ¿cómo sabe dónde debería estar el comienzo de un nuevo archivo?

¿Qué es una expresión regular que devolverá falso cuando una letra determinada aparece más de n veces?

¿Cómo comenzar a escribir un motor de ajedrez en C ++? (O Java) cuál es la matemática detrás de las estrategias

¿Por qué nadie podría romper el algoritmo de cifrado AES hasta ahora?

¿Cuál es la mejor manera de depurar un algoritmo recursivo?