/home/mjc1/public_html/lib/html_dom/testcase/memory_test.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
// $Rev: 179 $
error_reporting(E_ALL);
include_once(
'../simple_html_dom.php');

// -----------------------------------------------------------------------------
function dump_memory($init_size) {
    
$peak number_format(memory_get_peak_usage()/10240'.'',');
    
$curr number_format(memory_get_usage()/10240'.'',');
    
$diff $curr $init_size;
    echo 
'peak: ' .  $peak ' kb, end: ' $curr ' kb, add: ' $diff " kb<br>";
}

// -----------------------------------------------------------------------------
$filename './html/google.htm';
//$filename = 'test.htm';

// -----------------------------------------------------------------------------
// test_load_file_memory
function test_load_file_memory($filename$init_size) {
    echo 
'[load file] init memory: '.number_format(memory_get_usage()/10240'.'',').'<br>';
    echo 
'--------------------------------------------------------------------<br>';
    
flush();
    for(
$i=0$i<3; ++$i) {
        
$str file_get_contents($filename);
        
        
dump_memory($init_size);
        unset(
$str);
    }
    echo 
'after loop: '.number_format(memory_get_usage(), 0'.'',').'<br>';
    echo 
'--------------------------------------------------------------------<br>';
    
flush();
}

// -----------------------------------------------------------------------------
// test_multi_objects_str_get_html
function test_multi_str_get_html($filename$init_size) {
    global 
$__g_node_mgr;
    
    
$str file_get_contents($filename);
    echo 
'[str_get_html] init memory: '.number_format(memory_get_usage()/10240'.'',').'<br>';
    echo 
'--------------------------------------------------------------------<br>';
    
flush();
    for(
$i=0$i<3; ++$i) {
        
$html str_get_html($str);
        
dump_memory($init_size);
        
flush();
    }
    echo 
'after loop: '.number_format(memory_get_usage(), 0'.'',').'<br>';
    echo 
'--------------------------------------------------------------------<br>';
    
flush();
    unset(
$str);
}

// -----------------------------------------------------------------------------
// test_multi_file_get_html
function test_multi_file_get_html($filename$init_size) {
    echo 
'[file_get_html] init memory: '.number_format(memory_get_usage()/10240'.'',').'<br>';
    echo 
'--------------------------------------------------------------------<br>';
    
flush();
    for(
$i=0$i<3; ++$i) {
        
$html file_get_html($filename);
        
//$html->clear();
        
unset($html);
        
dump_memory($init_size);
        
flush();
    }
    echo 
'after loop: '.number_format(memory_get_usage(), 0'.'',').'<br>';
    echo 
'--------------------------------------------------------------------<br>';
    
flush();
}
/*
// -----------------------------------------------------------------------------
// test_multi_objects_clear_memory
function test_multi_objects_file_get_html_clear_memory($filename) {
echo '<br><br>[one object]<br>init memory: '.number_format(memory_get_usage(), 0, '.', ',').'<br>';
echo '------------------------------------------<br>';
flush();
$html = new simple_html_dom;
for($i=0; $i<3; ++$i) {
    $html->load_file($filename);
    $html->clear();
    dump_memory();
}
unset($dom);
echo 'final: '.number_format(memory_get_usage(), 0, '.', ',').'<br>';
flush();


echo '<br><br>[multi objects without clear memory]<br>init memory: '.number_format(memory_get_usage(), 0, '.', ',').'<br>';
echo '------------------------------------------<br>';
flush();
for($i=0; $i<3; ++$i) {
    $html = file_get_html($filename);
    dump_memory();
}
echo 'final: '.number_format(memory_get_usage(), 0, '.', ',').'<br>';
flush();
*/

// -----------------------------------------------------------------------------
// begin test
$init_size number_format(memory_get_usage(), 0'.'',');
echo 
'init ' $init_size " bytes<br>";
flush();

echo 
'<br>before function: '.number_format(memory_get_usage()/10240'.'',').'<br>';
test_load_file_memory($filename$init_size);
echo 
'after function: '.number_format(memory_get_usage()/10240'.'',').'<br><br>';
flush();

echo 
'<br>before function: '.number_format(memory_get_usage()/10240'.'',').'<br>';
test_multi_file_get_html($filename$init_size);
echo 
'after function: '.number_format(memory_get_usage()/10240'.'',').'<br><br>';
flush();

echo 
'<br>before function: '.number_format(memory_get_usage()/10240'.'',').'<br>';
test_multi_file_get_html($filename$init_size);
echo 
'after function: '.number_format(memory_get_usage()/10240'.'',').'<br><br>';
flush();
?>