Estoy timeusando algunos de mis comandos. Ahora, para promediar las medidas, me gustaría ejecutar y cronometrar mis comandos un número específico de veces, y obtener los resultados con una media calculada y una desviación estándar. El resultado sería como:
avgtime -n 100 my_command
real    0m5.388s stdev 0m0.068s
user    0m5.380s stdev 0m0.067s
sys     0m0.004s stdev 0m0.000s
¿Existe una herramienta UNIX para esto? ¿GNU / Linux tiene uno?
                    
                        performance
                                time
                                benchmark
                                time-utility
                                
                    
                    
                        Didier Trosset
fuente
                
                
            fuente

os.system(), causa la sobrecarga de llamar / crear un shell con cada comando. Probablemente mejor usar subprocess.call ()No es exactamente una herramienta UNIX o GNU / Linux, pero podría usar con bastante comodidad el entorno de software R para computación estadística para esto. (Sin embargo, no puedo encontrar nada más específico para su tarea ).
Editar Cómo podría dudar de ello, hay, por supuesto, es un paquete de punto de referencia para
R:rbenchmark. Aparentemente envuelvesystem.time()lo que también podría usar directamente. O eche un vistazo a esto, un simple par de funciones de cronómetro. También vea "Ejecutar un comando del sistema" @Rosetta Code (o no, essystem("command")).Edit2 Acabo de ver esta pregunta, "Medir el tiempo dentro de un script" en la columna "Relacionada" de la derecha, esto también se podría usar, es decir, tomar tiempo, hacer for-loop (
Ntiempos), tomar tiempo nuevamente, calcular el intervalo de tiempo, dividir porN. (Aún más fácil, intentetime ( for-loop ), analice su salida, divida porN).fuente
Puede usar
Rpara calcular rápidamente la media, la desviación estándar y otros valores interesantes.Por ejemplo, puede usar el tiempo GNU para escribir varias mediciones de tiempo de ejecución en un archivo CSV:
Entonces puede generar los valores con R así:
He creado un pequeño script de referencia que también hace una impresión bonita de la salida R, por ejemplo:
fuente
Opción 1 - sqlite :
cree una tabla simple con columnas de comando y tiempo, y visualice con los cálculos de agregación adecuados . Después del tiempo, agregue una fila a la tabla.
Ventajas: más simple para definir una tabla en comparación con la solución 2.
Desventajas: necesita (¿le importa?) Preocuparse por la retención de datos.
Opción 2 - rrdtool :
Defina el archivo de base de datos rrd, la definición de datos y las funciones de agregación. Después del tiempo, alimente la base de datos con
rrdtool update ....Ventajas: puede generar fácilmente gráficos con
rrdtool graph .... No hay problema de retención de datos (base de datos round robin).Desventajas: un poco más difícil de definir la base de datos rrd en comparación con una simple tabla / vista SQL
fuente
Hiperfina es otra opción.
Uso de la muestra:
Ver pregunta relacionada .
fuente