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  }