cuelang.org/go@v0.10.1/cue/testdata/benchmarks/listdedup.txtar (about) 1 #Issue: 758 2 #Issue: 1044 3 4 // TODO(perf): reduce number of conjunctions and disjunctions. 5 -- stats.txt -- 6 Leaks: 0 7 Freed: 24096 8 Reused: 24051 9 Allocs: 45 10 Retain: 1 11 12 Unifications: 18724 13 Conjuncts: 100730 14 Disjuncts: 24097 15 16 -- in.cue -- 17 A: #Task 18 B: #steps: #Script & {mount: [A]} 19 C: #steps: #Script & {mount: [B]} 20 21 #Script: {mount: [...#Task]} 22 23 #Task: { 24 // Without the proper constructs, repeating the below results 25 // in exponential runtime. 26 #ref 27 #ref 28 _ | {} 29 _ | {} 30 #steps: #Script 31 ... 32 } 33 34 #ref: {a: 1} | {b: 2} 35 -- out/evalalpha/stats -- 36 Leaks: 163 37 Freed: 10 38 Reused: 10 39 Allocs: 163 40 Retain: 0 41 42 Unifications: 53 43 Conjuncts: 407 44 Disjuncts: 40 45 -- out/eval -- 46 (struct){ 47 A: (#struct){ |((#struct){ 48 #steps: (#struct){ 49 mount: (list){ 50 } 51 } 52 a: (int){ 1 } 53 }, (#struct){ 54 #steps: (#struct){ 55 mount: (list){ 56 } 57 } 58 a: (int){ 1 } 59 b: (int){ 2 } 60 }, (#struct){ 61 #steps: (#struct){ 62 mount: (list){ 63 } 64 } 65 b: (int){ 2 } 66 }) } 67 B: (struct){ 68 #steps: (#struct){ 69 mount: (#list){ 70 0: (#struct){ |((#struct){ 71 #steps: (#struct){ 72 mount: (list){ 73 } 74 } 75 a: (int){ 1 } 76 }, (#struct){ 77 #steps: (#struct){ 78 mount: (list){ 79 } 80 } 81 a: (int){ 1 } 82 b: (int){ 2 } 83 }, (#struct){ 84 #steps: (#struct){ 85 mount: (list){ 86 } 87 } 88 b: (int){ 2 } 89 }) } 90 } 91 } 92 } 93 C: (struct){ 94 #steps: (#struct){ 95 mount: (#list){ 96 0: (#struct){ |((#struct){ 97 #steps: (#struct){ 98 mount: (#list){ 99 0: (#struct){ |((#struct){ 100 #steps: (#struct){ 101 mount: (list){ 102 } 103 } 104 a: (int){ 1 } 105 }, (#struct){ 106 #steps: (#struct){ 107 mount: (list){ 108 } 109 } 110 a: (int){ 1 } 111 b: (int){ 2 } 112 }, (#struct){ 113 #steps: (#struct){ 114 mount: (list){ 115 } 116 } 117 b: (int){ 2 } 118 }) } 119 } 120 } 121 a: (int){ 1 } 122 }, (#struct){ 123 #steps: (#struct){ 124 mount: (#list){ 125 0: (#struct){ |((#struct){ 126 #steps: (#struct){ 127 mount: (list){ 128 } 129 } 130 a: (int){ 1 } 131 }, (#struct){ 132 #steps: (#struct){ 133 mount: (list){ 134 } 135 } 136 a: (int){ 1 } 137 b: (int){ 2 } 138 }, (#struct){ 139 #steps: (#struct){ 140 mount: (list){ 141 } 142 } 143 b: (int){ 2 } 144 }) } 145 } 146 } 147 a: (int){ 1 } 148 b: (int){ 2 } 149 }, (#struct){ 150 #steps: (#struct){ 151 mount: (#list){ 152 0: (#struct){ |((#struct){ 153 #steps: (#struct){ 154 mount: (list){ 155 } 156 } 157 a: (int){ 1 } 158 }, (#struct){ 159 #steps: (#struct){ 160 mount: (list){ 161 } 162 } 163 a: (int){ 1 } 164 b: (int){ 2 } 165 }, (#struct){ 166 #steps: (#struct){ 167 mount: (list){ 168 } 169 } 170 b: (int){ 2 } 171 }) } 172 } 173 } 174 b: (int){ 2 } 175 }) } 176 } 177 } 178 } 179 #Script: (#struct){ 180 mount: (list){ 181 } 182 } 183 #Task: (#struct){ |((#struct){ 184 #steps: (#struct){ 185 mount: (list){ 186 } 187 } 188 a: (int){ 1 } 189 }, (#struct){ 190 #steps: (#struct){ 191 mount: (list){ 192 } 193 } 194 a: (int){ 1 } 195 b: (int){ 2 } 196 }, (#struct){ 197 #steps: (#struct){ 198 mount: (list){ 199 } 200 } 201 b: (int){ 2 } 202 }) } 203 #ref: (#struct){ |((#struct){ 204 a: (int){ 1 } 205 }, (#struct){ 206 b: (int){ 2 } 207 }) } 208 } 209 -- diff/-out/evalalpha/stats<==>+out/eval/stats -- 210 diff old new 211 --- old 212 +++ new 213 @@ -1,9 +1,9 @@ 214 -Leaks: 0 215 -Freed: 24096 216 -Reused: 24051 217 -Allocs: 45 218 -Retain: 1 219 +Leaks: 163 220 +Freed: 10 221 +Reused: 10 222 +Allocs: 163 223 +Retain: 0 224 225 -Unifications: 18724 226 -Conjuncts: 100730 227 -Disjuncts: 24097 228 +Unifications: 53 229 +Conjuncts: 407 230 +Disjuncts: 40 231 -- out/eval/stats -- 232 Leaks: 0 233 Freed: 24096 234 Reused: 24051 235 Allocs: 45 236 Retain: 1 237 238 Unifications: 18724 239 Conjuncts: 100730 240 Disjuncts: 24097 241 -- out/compile -- 242 --- in.cue 243 { 244 A: 〈0;#Task〉 245 B: { 246 #steps: (〈1;#Script〉 & { 247 mount: [ 248 〈3;A〉, 249 ] 250 }) 251 } 252 C: { 253 #steps: (〈1;#Script〉 & { 254 mount: [ 255 〈3;B〉, 256 ] 257 }) 258 } 259 #Script: { 260 mount: [ 261 ...〈2;#Task〉, 262 ] 263 } 264 #Task: { 265 〈1;#ref〉 266 〈1;#ref〉 267 (_|{}) 268 (_|{}) 269 #steps: 〈1;#Script〉 270 ... 271 } 272 #ref: ({ 273 a: 1 274 }|{ 275 b: 2 276 }) 277 }