El método simple para el cerebro que utilizo para comparar la velocidad de dos algoritmos es hacer dos binarios y ejecutarlos con el comando “time” UNIX con la misma entrada. Es muy conveniente porque no requiere ninguna maquinaria adicional en el código mismo. Todo lo que necesita hacer es pegar la palabra “tiempo” antes del mismo comando que usaría para ejecutarlo normalmente, y tal vez algunas opciones adicionales para mostrar el consumo de otros recursos.
Si quiero un poco más de detalle, utilizo una suite de evaluación comparativa que vuelve a ejecutar el código tantas veces como sea necesario para determinar el tiempo de ejecución promedio y su desviación estándar dentro de un margen de error estrecho, que generalmente requiere envoltorios bastante sencillos alrededor de su código.
Y si eso no da suficientes detalles, utilizo un generador de perfiles para ver dónde exactamente cada algoritmo pasa la mayor parte de su tiempo.
- ¿Cuál es el número de arreglos para la siguiente secuencia, dada la restricción?
- ¿Es el operador Sobel un filtro lineal?
- [matemática] x ^ 2-mx + n = 0 [/ matemática] y [matemática] x ^ 2 + mx + n = 0 [/ matemática] tiene raíces enteras donde [matemática] m [/ matemática] y [matemática] n [/ math] son enteros. ¿Cómo demuestras que [matemáticas] n [/ matemáticas] es divisible por [matemáticas] 6 [/ matemáticas]?
- ¿Cuál es el algoritmo para resolver el problema BRCKTS de SPOJ?
- ¿Existe un método para estimar una función exponencial, digamos [math] f (x) = \ mathrm {e} ^ {- x} [/ math] con [math] x [/ math] como número flotante, usando una secuencia de operaciones básicas: suma, resta, multiplicación, división y comparación?