cuelang.org/go@v0.13.0/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: 96 37 Freed: 0 38 Reused: 0 39 Allocs: 96 40 Retain: 0 41 42 Unifications: 40 43 Conjuncts: 98 44 Disjuncts: 24 45 46 CloseIDElems: 281 47 NumCloseIDs: 22 48 -- out/evalalpha -- 49 (struct){ 50 A: (#struct){ |((#struct){ 51 #steps: ~(#Script) 52 a: (int){ 1 } 53 }, (#struct){ 54 #steps: ~(#Script) 55 b: (int){ 2 } 56 }) } 57 B: (struct){ 58 #steps: (#struct){ 59 mount: (#list){ 60 0: (#struct){ |((#struct){ 61 #steps: ~(#Script) 62 a: (int){ 1 } 63 }, (#struct){ 64 #steps: ~(#Script) 65 b: (int){ 2 } 66 }) } 67 } 68 } 69 } 70 C: (struct){ 71 #steps: (#struct){ 72 mount: (#list){ 73 0: (#struct){ |((#struct){ 74 #steps: (#struct){ 75 mount: (#list){ 76 0: (#struct){ |((#struct){ 77 #steps: ~(#Script) 78 a: (int){ 1 } 79 }, (#struct){ 80 #steps: ~(#Script) 81 b: (int){ 2 } 82 }) } 83 } 84 } 85 a: (int){ 1 } 86 }, (#struct){ 87 #steps: (#struct){ 88 mount: (#list){ 89 0: (#struct){ |((#struct){ 90 #steps: ~(#Script) 91 a: (int){ 1 } 92 }, (#struct){ 93 #steps: ~(#Script) 94 b: (int){ 2 } 95 }) } 96 } 97 } 98 b: (int){ 2 } 99 }) } 100 } 101 } 102 } 103 #Script: (#struct){ 104 mount: (list){ 105 } 106 } 107 #Task: (#struct){ |((#struct){ 108 #steps: ~(#Script) 109 a: (int){ 1 } 110 }, (#struct){ 111 #steps: ~(#Script) 112 b: (int){ 2 } 113 }) } 114 #ref: (#struct){ |((#struct){ 115 a: (int){ 1 } 116 }, (#struct){ 117 b: (int){ 2 } 118 }) } 119 } 120 -- diff/-out/evalalpha<==>+out/eval -- 121 diff old new 122 --- old 123 +++ new 124 @@ -1,22 +1,9 @@ 125 (struct){ 126 A: (#struct){ |((#struct){ 127 - #steps: (#struct){ 128 - mount: (list){ 129 - } 130 - } 131 - a: (int){ 1 } 132 - }, (#struct){ 133 - #steps: (#struct){ 134 - mount: (list){ 135 - } 136 - } 137 - a: (int){ 1 } 138 - b: (int){ 2 } 139 - }, (#struct){ 140 - #steps: (#struct){ 141 - mount: (list){ 142 - } 143 - } 144 + #steps: ~(#Script) 145 + a: (int){ 1 } 146 + }, (#struct){ 147 + #steps: ~(#Script) 148 b: (int){ 2 } 149 }) } 150 B: (struct){ 151 @@ -23,23 +10,10 @@ 152 #steps: (#struct){ 153 mount: (#list){ 154 0: (#struct){ |((#struct){ 155 - #steps: (#struct){ 156 - mount: (list){ 157 - } 158 - } 159 - a: (int){ 1 } 160 - }, (#struct){ 161 - #steps: (#struct){ 162 - mount: (list){ 163 - } 164 - } 165 - a: (int){ 1 } 166 - b: (int){ 2 } 167 - }, (#struct){ 168 - #steps: (#struct){ 169 - mount: (list){ 170 - } 171 - } 172 + #steps: ~(#Script) 173 + a: (int){ 1 } 174 + }, (#struct){ 175 + #steps: ~(#Script) 176 b: (int){ 2 } 177 }) } 178 } 179 @@ -52,76 +26,23 @@ 180 #steps: (#struct){ 181 mount: (#list){ 182 0: (#struct){ |((#struct){ 183 - #steps: (#struct){ 184 - mount: (list){ 185 - } 186 - } 187 - a: (int){ 1 } 188 - }, (#struct){ 189 - #steps: (#struct){ 190 - mount: (list){ 191 - } 192 - } 193 - a: (int){ 1 } 194 - b: (int){ 2 } 195 - }, (#struct){ 196 - #steps: (#struct){ 197 - mount: (list){ 198 - } 199 - } 200 - b: (int){ 2 } 201 - }) } 202 - } 203 - } 204 - a: (int){ 1 } 205 - }, (#struct){ 206 - #steps: (#struct){ 207 - mount: (#list){ 208 - 0: (#struct){ |((#struct){ 209 - #steps: (#struct){ 210 - mount: (list){ 211 - } 212 - } 213 - a: (int){ 1 } 214 - }, (#struct){ 215 - #steps: (#struct){ 216 - mount: (list){ 217 - } 218 - } 219 - a: (int){ 1 } 220 - b: (int){ 2 } 221 - }, (#struct){ 222 - #steps: (#struct){ 223 - mount: (list){ 224 - } 225 - } 226 - b: (int){ 2 } 227 - }) } 228 - } 229 - } 230 - a: (int){ 1 } 231 - b: (int){ 2 } 232 - }, (#struct){ 233 - #steps: (#struct){ 234 - mount: (#list){ 235 - 0: (#struct){ |((#struct){ 236 - #steps: (#struct){ 237 - mount: (list){ 238 - } 239 - } 240 - a: (int){ 1 } 241 - }, (#struct){ 242 - #steps: (#struct){ 243 - mount: (list){ 244 - } 245 - } 246 - a: (int){ 1 } 247 - b: (int){ 2 } 248 - }, (#struct){ 249 - #steps: (#struct){ 250 - mount: (list){ 251 - } 252 - } 253 + #steps: ~(#Script) 254 + a: (int){ 1 } 255 + }, (#struct){ 256 + #steps: ~(#Script) 257 + b: (int){ 2 } 258 + }) } 259 + } 260 + } 261 + a: (int){ 1 } 262 + }, (#struct){ 263 + #steps: (#struct){ 264 + mount: (#list){ 265 + 0: (#struct){ |((#struct){ 266 + #steps: ~(#Script) 267 + a: (int){ 1 } 268 + }, (#struct){ 269 + #steps: ~(#Script) 270 b: (int){ 2 } 271 }) } 272 } 273 @@ -136,23 +57,10 @@ 274 } 275 } 276 #Task: (#struct){ |((#struct){ 277 - #steps: (#struct){ 278 - mount: (list){ 279 - } 280 - } 281 - a: (int){ 1 } 282 - }, (#struct){ 283 - #steps: (#struct){ 284 - mount: (list){ 285 - } 286 - } 287 - a: (int){ 1 } 288 - b: (int){ 2 } 289 - }, (#struct){ 290 - #steps: (#struct){ 291 - mount: (list){ 292 - } 293 - } 294 + #steps: ~(#Script) 295 + a: (int){ 1 } 296 + }, (#struct){ 297 + #steps: ~(#Script) 298 b: (int){ 2 } 299 }) } 300 #ref: (#struct){ |((#struct){ 301 -- out/eval -- 302 (struct){ 303 A: (#struct){ |((#struct){ 304 #steps: (#struct){ 305 mount: (list){ 306 } 307 } 308 a: (int){ 1 } 309 }, (#struct){ 310 #steps: (#struct){ 311 mount: (list){ 312 } 313 } 314 a: (int){ 1 } 315 b: (int){ 2 } 316 }, (#struct){ 317 #steps: (#struct){ 318 mount: (list){ 319 } 320 } 321 b: (int){ 2 } 322 }) } 323 B: (struct){ 324 #steps: (#struct){ 325 mount: (#list){ 326 0: (#struct){ |((#struct){ 327 #steps: (#struct){ 328 mount: (list){ 329 } 330 } 331 a: (int){ 1 } 332 }, (#struct){ 333 #steps: (#struct){ 334 mount: (list){ 335 } 336 } 337 a: (int){ 1 } 338 b: (int){ 2 } 339 }, (#struct){ 340 #steps: (#struct){ 341 mount: (list){ 342 } 343 } 344 b: (int){ 2 } 345 }) } 346 } 347 } 348 } 349 C: (struct){ 350 #steps: (#struct){ 351 mount: (#list){ 352 0: (#struct){ |((#struct){ 353 #steps: (#struct){ 354 mount: (#list){ 355 0: (#struct){ |((#struct){ 356 #steps: (#struct){ 357 mount: (list){ 358 } 359 } 360 a: (int){ 1 } 361 }, (#struct){ 362 #steps: (#struct){ 363 mount: (list){ 364 } 365 } 366 a: (int){ 1 } 367 b: (int){ 2 } 368 }, (#struct){ 369 #steps: (#struct){ 370 mount: (list){ 371 } 372 } 373 b: (int){ 2 } 374 }) } 375 } 376 } 377 a: (int){ 1 } 378 }, (#struct){ 379 #steps: (#struct){ 380 mount: (#list){ 381 0: (#struct){ |((#struct){ 382 #steps: (#struct){ 383 mount: (list){ 384 } 385 } 386 a: (int){ 1 } 387 }, (#struct){ 388 #steps: (#struct){ 389 mount: (list){ 390 } 391 } 392 a: (int){ 1 } 393 b: (int){ 2 } 394 }, (#struct){ 395 #steps: (#struct){ 396 mount: (list){ 397 } 398 } 399 b: (int){ 2 } 400 }) } 401 } 402 } 403 a: (int){ 1 } 404 b: (int){ 2 } 405 }, (#struct){ 406 #steps: (#struct){ 407 mount: (#list){ 408 0: (#struct){ |((#struct){ 409 #steps: (#struct){ 410 mount: (list){ 411 } 412 } 413 a: (int){ 1 } 414 }, (#struct){ 415 #steps: (#struct){ 416 mount: (list){ 417 } 418 } 419 a: (int){ 1 } 420 b: (int){ 2 } 421 }, (#struct){ 422 #steps: (#struct){ 423 mount: (list){ 424 } 425 } 426 b: (int){ 2 } 427 }) } 428 } 429 } 430 b: (int){ 2 } 431 }) } 432 } 433 } 434 } 435 #Script: (#struct){ 436 mount: (list){ 437 } 438 } 439 #Task: (#struct){ |((#struct){ 440 #steps: (#struct){ 441 mount: (list){ 442 } 443 } 444 a: (int){ 1 } 445 }, (#struct){ 446 #steps: (#struct){ 447 mount: (list){ 448 } 449 } 450 a: (int){ 1 } 451 b: (int){ 2 } 452 }, (#struct){ 453 #steps: (#struct){ 454 mount: (list){ 455 } 456 } 457 b: (int){ 2 } 458 }) } 459 #ref: (#struct){ |((#struct){ 460 a: (int){ 1 } 461 }, (#struct){ 462 b: (int){ 2 } 463 }) } 464 } 465 -- diff/-out/evalalpha/stats<==>+out/eval/stats -- 466 diff old new 467 --- old 468 +++ new 469 @@ -1,9 +1,12 @@ 470 -Leaks: 0 471 -Freed: 24096 472 -Reused: 24051 473 -Allocs: 45 474 -Retain: 1 475 - 476 -Unifications: 18724 477 -Conjuncts: 100730 478 -Disjuncts: 24097 479 +Leaks: 96 480 +Freed: 0 481 +Reused: 0 482 +Allocs: 96 483 +Retain: 0 484 + 485 +Unifications: 40 486 +Conjuncts: 98 487 +Disjuncts: 24 488 + 489 +CloseIDElems: 281 490 +NumCloseIDs: 22 491 -- out/eval/stats -- 492 Leaks: 0 493 Freed: 24096 494 Reused: 24051 495 Allocs: 45 496 Retain: 1 497 498 Unifications: 18724 499 Conjuncts: 100730 500 Disjuncts: 24097 501 -- out/compile -- 502 --- in.cue 503 { 504 A: 〈0;#Task〉 505 B: { 506 #steps: (〈1;#Script〉 & { 507 mount: [ 508 〈3;A〉, 509 ] 510 }) 511 } 512 C: { 513 #steps: (〈1;#Script〉 & { 514 mount: [ 515 〈3;B〉, 516 ] 517 }) 518 } 519 #Script: { 520 mount: [ 521 ...〈2;#Task〉, 522 ] 523 } 524 #Task: { 525 〈1;#ref〉 526 〈1;#ref〉 527 (_|{}) 528 (_|{}) 529 #steps: 〈1;#Script〉 530 ... 531 } 532 #ref: ({ 533 a: 1 534 }|{ 535 b: 2 536 }) 537 }