View difference between Paste ID: BdKpNvkE and
SHOW:
|
|
- or go back to the newest paste.
1 | - | |
1 | + | <?php |
2 | function array_key_exists_test( $n ) | |
3 | { | |
4 | //setup the array | |
5 | $array = array(); | |
6 | $set_key_count = (int)($n/2); | |
7 | for( $i = 0; $i < $set_key_count; $i++ ) { | |
8 | do { | |
9 | $rand_number = rand( 0, $n-1 ); | |
10 | } while( array_key_exists( $rand_number, $array ) ); | |
11 | $array[$rand_number] = NULL; | |
12 | } | |
13 | $test_array = range( 0, $n-1 ); | |
14 | shuffle( $test_array ); | |
15 | $result_array = array(); | |
16 | ||
17 | $start = microtime(true); | |
18 | ||
19 | foreach( $test_array as $test_number ) { | |
20 | if( array_key_exists( $test_number, $array ) ) { | |
21 | $result_array[] = $test_number; | |
22 | } | |
23 | } | |
24 | ||
25 | $stop = microtime(true); | |
26 | ||
27 | if( count( $result_array ) !== $set_key_count ) | |
28 | throw new Exception( "test failed" ); | |
29 | ||
30 | return ( $stop - $start ) / $n; | |
31 | } | |
32 | ||
33 | $n_array = range( 1, 100 ); | |
34 | $n_array = array_map( function( $n ) { return $n * 10000; }, $n_array ); | |
35 | foreach( $n_array as $n ) { | |
36 | print sprintf( "at n of %d time per call %.10f\n", $n, array_key_exists_test( $n ) ); | |
37 | } | |
38 | ||
39 | ?> |