· 8 years ago · Apr 20, 2018, 09:18 PM
1<?php
2// Connect to MySQL and use DB
3$host = 'tig.mysql.master';
4$login = 'ezp';
5$password = 'publish';
6$db = 'gha_4_3_0';
7
8$link = mysql_connect( $host, $login, $password ) or die( 'Could not connect: ' . mysql_error() );
9mysql_select_db( $db ) or die( 'Could not select database' );
10
11$query = 'DROP TABLE if exists perfomance_test';
12$result = mysql_query( $query ) or die( 'Query failed: ' . mysql_error() );
13$timings = array(
14 'insert' => array(),
15 'select' => array(),
16 'select_c' => array(),
17 'connect' => array()
18);
19
20$t = microtime( true );
21
22// Create schema
23$query = '
24CREATE TABLE perfomance_test(
25 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
26 `tst_txt` text,
27 PRIMARY KEY(`id`)
28)
29ENGINE=InnoDB DEFAULT CHARSET=utf8';
30$result = mysql_query( $query ) or die( 'Query failed: ' . mysql_error() );
31
32// Insert data
33$i = microtime( true );
34for( $k = 0; $k < 100; $k++ ) {
35 $query = 'INSERT INTO perfomance_test (tst_txt) VALUES ( \'test line' . $k . '\' );';
36 $result = mysql_query( $query ) or die( 'Query failed: ' . mysql_error() );
37 $timings['insert'][] = microtime( true ) - $i;
38 $i = microtime( true );
39}
40
41// Read data
42$s = microtime( true );
43for( $j = 0; $j < 30000; $j++ ) {
44 $query = 'SELECT * FROM perfomance_test WHERE id > ' . rand( 0, 100 ) . ' LIMIT 10;';
45 $result = mysql_query( $query ) or die( 'Query failed: ' . mysql_error() );
46 $timings['select'][] = microtime( true ) - $s;
47 $s = microtime( true );
48}
49
50// Read data
51$sc = microtime( true );
52for( $j = 0; $j < 30000; $j++ ) {
53 $query = 'SELECT 1';
54 $result = mysql_query( $query ) or die( 'Query failed: ' . mysql_error() );
55 $timings['select_c'][] = microtime( true ) - $sc;
56 $sc = microtime( true );
57}
58
59// remove shema
60mysql_free_result( $result );
61$query = 'DROP TABLE if exists perfomance_test';
62$result = mysql_query( $query ) or die( 'Query failed: ' . mysql_error() );
63mysql_close( $link );
64
65// Connects
66$c = microtime( true );
67for( $j = 0; $j < 500; $j++ ) {
68 $link = mysql_connect( $host, $login, $password ) or die( 'Could not connect: ' . mysql_error() );
69 mysql_close( $link );
70 $timings['connect'][] = microtime( true ) - $c;
71 $c = microtime( true );
72}
73
74// output results
75echo 'Execution time: ' . number_format( microtime( true ) - $t , 2 ) . "\n";
76echo 'AVG Insert Query time: ' . number_format( array_sum( $timings['insert'] ) / count( $timings['insert'] ), 6 ) . "\n";
77echo 'AVG Selet Query time: ' . number_format( array_sum( $timings['select'] ) / count( $timings['insert'] ), 6 ) . "\n";
78echo 'AVG Constant Selet Query time: ' . number_format( array_sum( $timings['select_c'] ) / count( $timings['select_c'] ), 6 ) . "\n";
79echo 'AVG Connect time: ' . number_format( array_sum( $timings['connect'] ) / count( $timings['connect'] ), 6 ) . "\n";
80?>