Mostrando entradas con la etiqueta benchmarking. Mostrar todas las entradas
Mostrando entradas con la etiqueta benchmarking. Mostrar todas las entradas

martes, 22 de abril de 2008

mysql_num_rows vs. SQl - SELECT COUNT(*)

Haciendo una paginación para un proyecto me dió la curiosidad de verificar cuál método es más efectivo para contar el total de registros. Bueno a pesar de ser obvio que con sql count(*) sería más rápido, me propuse hacer las pruebas y estos fueron los resultados:

  • Prueba con SELECT COUNT(*) FROM tabla
    Fecha: 22/04/2008 11:35:17 am

    Test con count(*) - registros = 44069
    Tiempo 0.00441598892212 segundos
  • Prueba mysql_num_rows
    Fecha: 22/04/2008 11:35:21 am
    Test con mysql_affected_rows - registros = 44069
    Tiempo 59.3658621311 segundos
Código fuente de la prueba:
1.    
2.
require('../benchmark.php');
3. $caso = 'mysql';
4. $file = '../var/bench_databasecount.txt';
5. try{
6. Benchmark::startBenchmark($file);
7. $conn = mysql_connect('localhost', 'root', 'pannet1');
8. mysql_select_db('test', $conn);
9. switch($caso){
10. case 'count':
11. $sql = "SELECT COUNT(*) as contador FROM tabla";
12. $rs = mysql_query($sql, $conn);
13. $count = mysql_fetch_array($rs);
14. Benchmark::pushLog('Test con count - registros = '.$count['contador']."\n", $file);
15. break;
16. case 'mysql':
17. $sql = "SELECT * FROM tabla";
18. $rs = mysql_query($sql, $conn);
19. $count = mysql_num_rows($rs);
20. Benchmark::pushLog('Test con mysql_affected_rows - registros = '.$count ."\n", $file);
21. break;
22.
23.
}
24. Benchmark::endBenchmark($file);
25. echo 'Termino';
26. }catch(Exception $e){
27. echo $e->getMessage();
28. }
29. ?>
30.
31.

Conclusión

A las personas que todavía realizan las paginaciones con mysql_num_rows, preferiblemente usen sql (función COUNT(*)).

Saludos ...

martes, 11 de marzo de 2008

Benchmark a tu sitios con ApacheBench en Linux

Si tu sitio u aplicación está alojada en un servidor que corre sobre apache, entonces podemos hacer un Benchmark para verificar el tiempo de respuesta de nuestra aplicación, gracias a la aplicación ApacheBench.

Este aplicación nos ayuda para hacer benchmark de aplicaciones hechas en php por ejemplo u otro tipo de aplicaciones, ya que podemos medir el tiempo de respuesta de nuestra app.

Ahora les coloco un ejemplo de su uso:
  • Entramos a la consola y colocamos:
    #: ab -c 10 -t 60 http://example.org/productos.php
  • Para llamar a la aplicación utilizamos el comando ab; explico los parámetros:
    • -c: este parámetro indica el número de clientes con el cual se va a llevar a cabo el test.
    • -t: indica el tiempo durante el cual se va a llevar a cabo el test. Este tiempo es en segundos.
Además de esos parámetros que pueden ser de utilidad para nuestras benchmark a servidores apache. Compruebe introduciendo ab man para obtener más información.

Espero puedan mejorar los procesos de sus aplicaciones utilizando esta herramienta para medir su rendimiento.

Saludos ...