• Publicidad

Hacer un "benchmark"

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Hacer un "benchmark"

Notapor pascal » 2007-05-08 15:42 @696

Hola amigos, veréis, tengo que hacer un trabajo para la facultad, algo sencillo, un benchmark portable; debe ser en Perl por lo que necesito algo de ayuda (yo controlo c, c++, java).

He visto que existe un módulo llamado benchmark con el que puedes medir el tiempo que tarda en hacer algo determinado; necesito saber si se puede hacer algo como medir cuántos bloques de datos se pueden escribir en disco por espacio de tiempo, tiempo de acceso a memoria, etc..

Es para probar el programa en Linux y Windows y hacer una comparativa. Si sabéis cómo hacer esto os lo agradecería. De Perl solo sé lo básico, bucles, módulos, etc..., no conozco otras funciones más complejas.
pascal
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2007-05-08 15:32 @689

Publicidad

Notapor explorer » 2007-05-08 18:42 @820

Bienvenido a los foros de Perl en Español.

Perl no se debe utilizar para realizar esas mediciones, pues hay que recordar que Perl corre sobre una máquina virtual, como Java, y seguro que tampoco querrás usar Java para medir el benchmark de un disco. Lo harás en C o C++ ya que eso generará unas llamadas al sistema y unas mediciones de tiempos más precisas.

La forma más profesional de hacerlo en Perl sería haciendo un módulo XS en C y luego agregarlo como un módulo externo al programa Perl. O usar el módulo Inline::C.

De cualquier forma, hacer algo portable es muy complicado. El número de sistemas informáticos distintos es enorme.

Incluso si se te ocurriera hacer un benchmark de a ver cuánto tiempo se tarda en escribir un fichero de 60Mb a disco... ¿cómo sabes que realmente /dev/sdc es un disco del sistema? ¿Y si es una memoria USB? Bueno, vale, sólo queremos medir la velocidad del dispositivo. Si sólo se trata de hacer mediciones no estamos hablando de benchmark propiamente, si no más bien de profiling. Bueno, es casi lo mismo. Pero no. Con benchmark se trata de sacar unas mediciones para compararlas con otros sistemas, mientras que con profiling intentamos averiguar las partes más lentas de un programa para luego intentar mejorarlo.

Con el módulo Benchmark no podrás medir tiempos como los que cuentas. Desconozco si existe un módulo así, pero repito, no creo que exista. El uso del módulo se explica con su sinopsis. Puedes probar a grabar o leer un fichero de varias formas distintas (con varios read de distinto tamaño) y comparar el tiempo que han tardado).

El último benchmark entre Linux y Windows en este foro.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor pascal » 2007-05-09 06:54 @329

Gracias por tu respuesta. Ya sabía que Perl corría sobre una máquina virtual, y que las pruebas que realizo no son realmente un benchmark propiamente dicho, pero aun así yo lo que intento hacer es medir el tiempo de no se, escritura de un fichero en ext3 y en fat32, o ext3 y ext2, ese tipo de pruebas. No busco crear un profiler je,je. Lo haré con C por si acaso pero creo que la opción de incluirlo en como programa externo no me vale; miraré a ver si se puede hacer algo así con Python.
Gracias
pascal
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2007-05-08 15:32 @689

Notapor explorer » 2007-05-09 10:09 @464

Si se trata de medir tiempos sin muchas pretensiones, te da lo mismo entonces hacerlo en Perl que en Python. La cuestión es usar las funciones propias de escritura a fichero en la que puedes ir variando el tamaño del bloque, y al final ver el tiempo que ha tardado.

En Perl, en ese caso, usaría las funciones sysread() y syswrite(), ya que son llamadas directas a las funciones del sistema operativo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2007-05-10 04:29 @229

En este foro hay un tutorial al respecto del uso de benchmark.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado