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  }