Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
2 jumps found. (Code = 44) Position 1 = 43, Position 2 = 9
Branch analysis from position: 43
1 jumps found. (Code = 42) Position 1 = 86
Branch analysis from position: 86
2 jumps found. (Code = 44) Position 1 = 89, Position 2 = 55
Branch analysis from position: 89
2 jumps found. (Code = 43) Position 1 = 117, Position 2 = 126
Branch analysis from position: 117
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 126
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 55
2 jumps found. (Code = 46) Position 1 = 56, Position 2 = 61
Branch analysis from position: 56
2 jumps found. (Code = 43) Position 1 = 62, Position 2 = 73
Branch analysis from position: 62
1 jumps found. (Code = 42) Position 1 = 85
Branch analysis from position: 85
2 jumps found. (Code = 44) Position 1 = 89, Position 2 = 55
Branch analysis from position: 89
Branch analysis from position: 55
Branch analysis from position: 73
2 jumps found. (Code = 44) Position 1 = 89, Position 2 = 55
Branch analysis from position: 89
Branch analysis from position: 55
Branch analysis from position: 61
Branch analysis from position: 9
2 jumps found. (Code = 46) Position 1 = 10, Position 2 = 15
Branch analysis from position: 10
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 27
Branch analysis from position: 16
1 jumps found. (Code = 42) Position 1 = 39
Branch analysis from position: 39
2 jumps found. (Code = 44) Position 1 = 43, Position 2 = 9
Branch analysis from position: 43
Branch analysis from position: 9
Branch analysis from position: 27
2 jumps found. (Code = 44) Position 1 = 43, Position 2 = 9
Branch analysis from position: 43
Branch analysis from position: 9
Branch analysis from position: 15
filename: /in/1h0jU
function name: (null)
number of ops: 128
compiled vars: !0 = $t1, !1 = $live1, !2 = $i, !3 = $k, !4 = $obj, !5 = $id, !6 = $dt_simple, !7 = $t2, !8 = $live2, !9 = $dt_freelist
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
3 0 E > DECLARE_CONST 'N', 100000
4 1 DECLARE_CONST 'TYPE', 0
62 2 INIT_FCALL 'microtime'
3 SEND_VAL <true>
4 DO_ICALL $10
5 ASSIGN !0, $10
63 6 ASSIGN !1, <array>
64 7 ASSIGN !2, 0
8 > JMP ->40
65 9 > > JMPZ_EX ~14 !1, ->15
10 > INIT_FCALL 'mt_rand'
11 SEND_VAL 0
12 SEND_VAL 1
13 DO_ICALL $15
14 BOOL ~14 $15
15 > > JMPZ ~14, ->27
66 16 > INIT_FCALL 'array_rand'
17 SEND_VAR !1
18 DO_ICALL $16
19 ASSIGN !3, $16
67 20 INIT_FCALL 'simple_alloc'
21 FETCH_DIM_R ~18 !1, !3
22 SEND_VAL ~18
23 SEND_VAL <true>
24 DO_FCALL 0
68 25 UNSET_DIM !1, !3
65 26 > JMP ->39
70 27 > CONCAT ~20 'obj-', !2
28 CONCAT ~21 ~20, '-'
29 INIT_FCALL 'mt_rand'
30 DO_ICALL $22
31 CONCAT ~23 ~21, $22
32 ASSIGN !4, ~23
71 33 INIT_FCALL 'simple_alloc'
34 SEND_VAR !4
35 DO_FCALL 0 $25
36 ASSIGN !5, $25
72 37 ASSIGN_DIM !1
38 OP_DATA !5
64 39 > PRE_INC !2
40 > FETCH_CONSTANT ~29 'N'
41 IS_SMALLER !2, ~29
42 > JMPNZ ~30, ->9
75 43 > INIT_FCALL 'microtime'
44 SEND_VAL <true>
45 DO_ICALL $31
46 SUB ~32 $31, !0
47 ASSIGN !6, ~32
77 48 INIT_FCALL 'microtime'
49 SEND_VAL <true>
50 DO_ICALL $34
51 ASSIGN !7, $34
78 52 ASSIGN !8, <array>
79 53 ASSIGN !2, 0
54 > JMP ->86
80 55 > > JMPZ_EX ~38 !8, ->61
56 > INIT_FCALL 'mt_rand'
57 SEND_VAL 0
58 SEND_VAL 1
59 DO_ICALL $39
60 BOOL ~38 $39
61 > > JMPZ ~38, ->73
81 62 > INIT_FCALL 'array_rand'
63 SEND_VAR !8
64 DO_ICALL $40
65 ASSIGN !3, $40
82 66 INIT_FCALL 'freelist_alloc'
67 FETCH_DIM_R ~42 !8, !3
68 SEND_VAL ~42
69 SEND_VAL <true>
70 DO_FCALL 0
83 71 UNSET_DIM !8, !3
80 72 > JMP ->85
85 73 > CONCAT ~44 'obj-', !2
74 CONCAT ~45 ~44, '-'
75 INIT_FCALL 'mt_rand'
76 DO_ICALL $46
77 CONCAT ~47 ~45, $46
78 ASSIGN !4, ~47
86 79 INIT_FCALL 'freelist_alloc'
80 SEND_VAR !4
81 DO_FCALL 0 $49
82 ASSIGN !5, $49
87 83 ASSIGN_DIM !8
84 OP_DATA !5
79 85 > PRE_INC !2
86 > FETCH_CONSTANT ~53 'N'
87 IS_SMALLER !2, ~53
88 > JMPNZ ~54, ->55
90 89 > INIT_FCALL 'microtime'
90 SEND_VAL <true>
91 DO_ICALL $55
92 SUB ~56 $55, !7
93 ASSIGN !9, ~56
93 94 INIT_FCALL 'number_format'
95 FETCH_CONSTANT ~58 'N'
96 SEND_VAL ~58
97 DO_ICALL $59
98 CONCAT ~60 'Random+Allocation%2FFree+Benchmark+%28N+%3D+', $59
99 CONCAT ~61 ~60, '%29%0A'
100 ECHO ~61
94 101 INIT_FCALL 'number_format'
102 SEND_VAR !6
103 SEND_VAL 4
104 DO_ICALL $62
105 CONCAT ~63 'Simple+allocator%3A+++++', $62
106 CONCAT ~64 ~63, '+sec%0A'
107 ECHO ~64
95 108 INIT_FCALL 'number_format'
109 SEND_VAR !9
110 SEND_VAL 4
111 DO_ICALL $65
112 CONCAT ~66 'Freelist+allocator%3A+++', $65
113 CONCAT ~67 ~66, '+sec%0A'
114 ECHO ~67
96 115 IS_SMALLER 0, !9
116 > JMPZ ~68, ->126
97 117 > INIT_FCALL 'number_format'
118 DIV ~69 !9, !6
119 SEND_VAL ~69
120 SEND_VAL 2
121 DO_ICALL $70
122 CONCAT ~71 'Simple+is+', $70
123 CONCAT ~72 ~71, 'x+faster%0A'
124 ECHO ~72
96 125 > JMP ->127
99 126 > ECHO '%0A'
100 127 > > RETURN 1
Function simple_alloc:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 8
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 23
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 22
Branch analysis from position: 20
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 22
Branch analysis from position: 23
2 jumps found. (Code = 43) Position 1 = 25, Position 2 = 33
Branch analysis from position: 25
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 33
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 23
Branch analysis from position: 18
Branch analysis from position: 23
filename: /in/1h0jU
function name: simple_alloc
number of ops: 35
compiled vars: !0 = $id, !1 = $delete, !2 = $type, !3 = $ids, !4 = $key
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
6 0 E > RECV !0
1 RECV_INIT !1 <false>
2 RECV_INIT !2 <const ast>
8 3 BIND_STATIC !3
10 4 TYPE_CHECK 16 !0
5 > JMPZ ~5, ->8
11 6 > ASSIGN !4, !0
10 7 > JMP ->17
13 8 > INIT_FCALL 'array_search'
9 SEND_VAR !0
10 FETCH_DIM_IS ~7 !3, !2
11 COALESCE ~8 ~7
12 QM_ASSIGN ~8 <array>
13 SEND_VAL ~8
14 SEND_VAL <true>
15 DO_ICALL $9
16 ASSIGN !4, $9
16 17 > > JMPZ !1, ->23
17 18 > TYPE_CHECK 1018 !4
19 > JMPZ ~11, ->22
18 20 > FETCH_DIM_UNSET $12 !3, !2
21 UNSET_DIM $12, !4
20 22 > > RETURN !4
23 23 > TYPE_CHECK 4 !4
24 > JMPZ ~13, ->33
24 25 > FETCH_DIM_IS ~14 !3, !2
26 COALESCE ~15 ~14
27 QM_ASSIGN ~15 <array>
28 COUNT ~16 ~15
29 ASSIGN !4, ~16
25 30 FETCH_DIM_W $18 !3, !2
31 ASSIGN_DIM $18, !4
32 OP_DATA !0
27 33 > > RETURN !4
28 34* > RETURN null
End of function simple_alloc
Function freelist_alloc:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 19, Position 2 = 24
Branch analysis from position: 19
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 23
Branch analysis from position: 20
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 23
Branch analysis from position: 24
2 jumps found. (Code = 77) Position 1 = 27, Position 2 = 46
Branch analysis from position: 27
2 jumps found. (Code = 78) Position 1 = 28, Position 2 = 46
Branch analysis from position: 28
2 jumps found. (Code = 43) Position 1 = 36, Position 2 = 37
Branch analysis from position: 36
1 jumps found. (Code = 42) Position 1 = 27
Branch analysis from position: 27
Branch analysis from position: 37
2 jumps found. (Code = 43) Position 1 = 39, Position 2 = 45
Branch analysis from position: 39
2 jumps found. (Code = 43) Position 1 = 41, Position 2 = 44
Branch analysis from position: 41
1 jumps found. (Code = 42) Position 1 = 46
Branch analysis from position: 46
2 jumps found. (Code = 43) Position 1 = 49, Position 2 = 67
Branch analysis from position: 49
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 63
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 66
Branch analysis from position: 66
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 63
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 67
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 44
Branch analysis from position: 45
1 jumps found. (Code = 42) Position 1 = 27
Branch analysis from position: 27
Branch analysis from position: 46
Branch analysis from position: 46
filename: /in/1h0jU
function name: freelist_alloc
number of ops: 69
compiled vars: !0 = $id, !1 = $delete, !2 = $type, !3 = $ids, !4 = $freelist, !5 = $match, !6 = $arr, !7 = $i, !8 = $nextId
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
30 0 E > RECV !0
1 RECV_INIT !1 <false>
2 RECV_INIT !2 <const ast>
32 3 BIND_STATIC !3
33 4 BIND_STATIC !4
34 5 FETCH_DIM_IS ~9 !4, !2
6 COALESCE ~10 ~9
7 ASSIGN_DIM ~11 !4, !2
8 OP_DATA <array>
9 QM_ASSIGN ~10 ~11
10 FREE ~10
35 11 FETCH_DIM_IS ~12 !3, !2
12 COALESCE ~13 ~12
13 ASSIGN_DIM ~14 !3, !2
14 OP_DATA <array>
15 QM_ASSIGN ~13 ~14
16 FREE ~13
36 17 TYPE_CHECK 16 !0
18 > JMPZ ~15, ->24
37 19 > > JMPZ !1, ->23
20 > FETCH_DIM_W $16 !4, !2
21 ASSIGN_DIM $16
22 OP_DATA !0
38 23 > > RETURN !0
40 24 > ASSIGN !5, null
41 25 FETCH_DIM_R ~19 !3, !2
26 > FE_RESET_R $20 ~19, ->46
27 > > FE_FETCH_R ~21 $20, !6, ->46
28 > ASSIGN !7, ~21
42 29 INIT_FCALL 'in_array'
30 SEND_VAR !7
31 FETCH_DIM_R ~23 !4, !2
32 SEND_VAL ~23
33 SEND_VAL <true>
34 DO_ICALL $24
35 > JMPZ $24, ->37
36 > > JMP ->27
43 37 > IS_IDENTICAL !6, !0
38 > JMPZ ~25, ->45
44 39 > ASSIGN !5, !7
45 40 > JMPZ !1, ->44
41 > FETCH_DIM_W $27 !4, !2
42 ASSIGN_DIM $27
43 OP_DATA !7
46 44 > > JMP ->46
41 45 > > JMP ->27
46 > FE_FREE $20
49 47 TYPE_CHECK 2 !5
48 > JMPZ ~29, ->67
50 49 > INIT_FCALL 'array_pop'
50 FETCH_DIM_W $30 !4, !2
51 SEND_REF $30
52 DO_ICALL $31
53 ASSIGN !8, $31
51 54 TYPE_CHECK 2 !8
55 > JMPZ ~33, ->63
52 56 > FETCH_DIM_R ~34 !3, !2
57 COUNT ~35 ~34
58 ASSIGN !8, ~35
53 59 FETCH_DIM_W $37 !3, !2
60 ASSIGN_DIM $37
61 OP_DATA !0
51 62 > JMP ->66
55 63 > FETCH_DIM_W $39 !3, !2
64 ASSIGN_DIM $39, !8
65 OP_DATA !0
57 66 > > RETURN !8
59 67 > > RETURN !5
60 68* > RETURN null
End of function freelist_alloc
Generated using Vulcan Logic Dumper, using php 8.0.0