...

Text file src/cuelang.org/go/cue/testdata/benchmarks/listdedup.txtar

Documentation: cuelang.org/go/cue/testdata/benchmarks

     1#Issue: 758
     2#Issue: 1044
     3
     4// TODO(perf): reduce number of conjunctions and disjunctions.
     5-- stats.txt --
     6Leaks:  0
     7Freed:  24096
     8Reused: 24051
     9Allocs: 45
    10Retain: 1
    11
    12Unifications: 18724
    13Conjuncts:    100730
    14Disjuncts:    24097
    15
    16-- in.cue --
    17A: #Task
    18B: #steps: #Script & {mount: [A]}
    19C: #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/eval/stats --
    36Leaks:  0
    37Freed:  24096
    38Reused: 24051
    39Allocs: 45
    40Retain: 1
    41
    42Unifications: 18724
    43Conjuncts:    100730
    44Disjuncts:    24097
    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-- out/compile --
   210--- in.cue
   211{
   212  A: 〈0;#Task〉
   213  B: {
   214    #steps: (〈1;#Script〉 & {
   215      mount: [
   216        〈3;A〉,
   217      ]
   218    })
   219  }
   220  C: {
   221    #steps: (〈1;#Script〉 & {
   222      mount: [
   223        〈3;B〉,
   224      ]
   225    })
   226  }
   227  #Script: {
   228    mount: [
   229      ...〈2;#Task〉,
   230    ]
   231  }
   232  #Task: {
   233    〈1;#ref〉
   234    〈1;#ref〉
   235    (_|{})
   236    (_|{})
   237    #steps: 〈1;#Script〉
   238    ...
   239  }
   240  #ref: ({
   241    a: 1
   242  }|{
   243    b: 2
   244  })
   245}

View as plain text