Skip to content

cue cmd: evaluates entire package even when command only uses subset of data #4242

@selfuryon

Description

@selfuryon

When running cue cmd, CUE evaluates the entire package including all imported modules, even when a command only references a small subset of data. This causes unnecessary performance overhead.

I have two commands:

  • show-static - prints a simple static struct {one: 1, two: 2} (does NOT use any heavy computation)
  • show-heavy - prints keys from a heavily computed result (generated by AI here)

The heavy module generates 1000 items with deeply nested closed structs and unification operations.

Reproducer (txtar):

exec cue cmd show-static
exec cue cmd show-heavy

-- cue.mod/module.cue --
module: "github.com/selfuryon/test@v0"
language: {
      version: "v0.15.3"
}

-- ext_tool.cue --
package main

import (
      "encoding/json"
      "tool/cli"

      "github.com/selfuryon/test/module"
)

static: {
      one: 1
      two: 2
}

keys: [for name, _ in module.heavyResult {name}]

command: "show-static": print: cli.Print & {
      text: json.Marshal(static)
}

command: "show-heavy": print: cli.Print & {
      text: json.Marshal(keys)
}

-- module/heavy_computation.cue --
package module

import "list"

#Field: {
      name:    string
      value:   string | int | bool
      enabled: bool
      meta?: #Meta
}

#Meta: {
      tag:      string
      priority: int
      labels?: #Labels
}

#Labels: {
      env:     "dev" | "staging" | "prod"
      region:  "us" | "eu" | "asia"
      tier:    "free" | "pro" | "enterprise"
      extra?: #ExtraLabels
}

#ExtraLabels: {
      owner:    string
      team:     string
      project:  string
      version?: string
}

#Level5: {
      id:     string
      field1: #Field
      field2: #Field
      field3: #Field
}

#Level4: {
      name:   string
      nested: #Level5
      items: [...#Level5]
}

#Level3: {
      config: #Level4
      backup: #Level4
      meta:   #Meta
}

#Level2: {
      primary:   #Level3
      secondary: #Level3
      labels:    #Labels
}

#Level1: {
      main:     #Level2
      fallback: #Level2
      extra:    #ExtraLabels
}

#Root: {
      data:   #Level1
      schema: #Level1
}

// Generate items with deep unification against closed schemas
_items: [
      for i in list.Range(0, 1000, 1) {
              #Root & {
                      data: #Level1 & {
                              main: #Level2 & {
                                      primary: #Level3 & {
                                              config: #Level4 & {
                                                      name: "cfg_\(i)"
                                                      nested: #Level5 & {
                                                              id: "n_\(i)"
                                                              field1: #Field & {name: "f1", value: "v\(i)", enabled: true, meta: #Meta & {ta
"us", tier: "pro", extra: #ExtraLabels & {owner: "o", team: "t", project: "p"}}}}
                                                              field2: #Field & {name: "f2", value: i, enabled: true, meta: #Meta & {tag: "t2
tier: "pro", extra: #ExtraLabels & {owner: "o", team: "t", project: "p"}}}}
                                                              field3: #Field & {name: "f3", value: true, enabled: true, meta: #Meta & {tag:
"us", tier: "pro", extra: #ExtraLabels & {owner: "o", team: "t", project: "p"}}}}
                                                      }
                                                      items: [
                                                              #Level5 & {id: "i1_\(i)", field1: #Field & {name: "a", value: "x", enabled: tr
field3: #Field & {name: "c", value: true, enabled: true}},
                                                              #Level5 & {id: "i2_\(i)", field1: #Field & {name: "a", value: "y", enabled: tr
field3: #Field & {name: "c", value: false, enabled: true}},
                                                      ]
                                              }
                                              backup: #Level4 & {
                                                      name: "bak_\(i)"
                                                      nested: #Level5 & {
                                                              id: "bn_\(i)"
                                                              field1: #Field & {name: "bf1", value: "bv", enabled: true}
                                                              field2: #Field & {name: "bf2", value: i * 2, enabled: true}
                                                              field3: #Field & {name: "bf3", value: false, enabled: true}
                                                      }
                                                      items: [#Level5 & {id: "bi_\(i)", field1: #Field & {name: "ba", value: "bx", enabled:
enabled: true}, field3: #Field & {name: "bc", value: true, enabled: true}}]
                                              }
                                              meta: #Meta & {tag: "m_\(i)", priority: i, labels: #Labels & {env: "prod", region: "eu", tier:
"o\(i)", team: "t\(i)", project: "p\(i)"}}}
                                      }
                                      secondary: #Level3 & {
                                              config: #Level4 & {
                                                      name: "scfg_\(i)"
                                                      nested: #Level5 & {id: "sn_\(i)", field1: #Field & {name: "sf1", value: "sv", enabled:
enabled: true}, field3: #Field & {name: "sf3", value: true, enabled: true}}
                                                      items: []
                                              }
                                              backup: #Level4 & {
                                                      name: "sbak_\(i)"
                                                      nested: #Level5 & {id: "sbn_\(i)", field1: #Field & {name: "sbf1", value: "sbv", enabl
enabled: true}, field3: #Field & {name: "sbf3", value: false, enabled: true}}
                                                      items: []
                                              }
                                              meta: #Meta & {tag: "sm_\(i)", priority: i}
                                      }
                                      labels: #Labels & {env: "staging", region: "asia", tier: "free", extra: #ExtraLabels & {owner: "lo\(i)
                              }
                              fallback: #Level2 & {
                                      primary: #Level3 & {
                                              config: #Level4 & {name: "fcfg_\(i)", nested: #Level5 & {id: "fn_\(i)", field1: #Field & {name
#Field & {name: "ff2", value: i, enabled: true}, field3: #Field & {name: "ff3", value: true, enabled: true}}, items: []}
                                              backup: #Level4 & {name: "fbak_\(i)", nested: #Level5 & {id: "fbn_\(i)", field1: #Field & {nam
field2: #Field & {name: "fbf2", value: i, enabled: true}, field3: #Field & {name: "fbf3", value: false, enabled: true}}, items: []}
                                              meta: #Meta & {tag: "fm_\(i)", priority: i}
                                      }
                                      secondary: #Level3 & {
                                              config: #Level4 & {name: "fscfg_\(i)", nested: #Level5 & {id: "fsn_\(i)", field1: #Field & {na
field2: #Field & {name: "fsf2", value: i, enabled: true}, field3: #Field & {name: "fsf3", value: true, enabled: true}}, items: []}
                                              backup: #Level4 & {name: "fsbak_\(i)", nested: #Level5 & {id: "fsbn_\(i)", field1: #Field & {n
field2: #Field & {name: "fsbf2", value: i, enabled: true}, field3: #Field & {name: "fsbf3", value: false, enabled: true}}, items: []}
                                              meta: #Meta & {tag: "fsm_\(i)", priority: i}
                                      }
                                      labels: #Labels & {env: "dev", region: "us", tier: "pro"}
                              }
                              extra: #ExtraLabels & {owner: "own_\(i)", team: "team_\(i)", project: "proj_\(i)"}
                      }
                      schema: #Level1 & {
                              main: #Level2 & {
                                      primary: #Level3 & {
                                              config: #Level4 & {name: "xcfg_\(i)", nested: #Level5 & {id: "xn_\(i)", field1: #Field & {name
#Field & {name: "xf2", value: i, enabled: true}, field3: #Field & {name: "xf3", value: true, enabled: true}}, items: []}
                                              backup: #Level4 & {name: "xbak_\(i)", nested: #Level5 & {id: "xbn_\(i)", field1: #Field & {nam
field2: #Field & {name: "xbf2", value: i, enabled: true}, field3: #Field & {name: "xbf3", value: false, enabled: true}}, items: []}
                                              meta: #Meta & {tag: "xm_\(i)", priority: i}
                                      }
                                      secondary: #Level3 & {
                                              config: #Level4 & {name: "xscfg_\(i)", nested: #Level5 & {id: "xsn_\(i)", field1: #Field & {na
field2: #Field & {name: "xsf2", value: i, enabled: true}, field3: #Field & {name: "xsf3", value: true, enabled: true}}, items: []}
                                              backup: #Level4 & {name: "xsbak_\(i)", nested: #Level5 & {id: "xsbn_\(i)", field1: #Field & {n
field2: #Field & {name: "xsbf2", value: i, enabled: true}, field3: #Field & {name: "xsbf3", value: false, enabled: true}}, items: []}
                                              meta: #Meta & {tag: "xsm_\(i)", priority: i}
                                      }
                                      labels: #Labels & {env: "prod", region: "eu", tier: "enterprise"}
                              }
                              fallback: #Level2 & {
                                      primary: #Level3 & {
                                              config: #Level4 & {name: "ycfg_\(i)", nested: #Level5 & {id: "yn_\(i)", field1: #Field & {name
#Field & {name: "yf2", value: i, enabled: true}, field3: #Field & {name: "yf3", value: true, enabled: true}}, items: []}
                                              backup: #Level4 & {name: "ybak_\(i)", nested: #Level5 & {id: "ybn_\(i)", field1: #Field & {nam
field2: #Field & {name: "ybf2", value: i, enabled: true}, field3: #Field & {name: "ybf3", value: false, enabled: true}}, items: []}
                                              meta: #Meta & {tag: "ym_\(i)", priority: i}
                                      }
                                      secondary: #Level3 & {
                                              config: #Level4 & {name: "yscfg_\(i)", nested: #Level5 & {id: "ysn_\(i)", field1: #Field & {na
field2: #Field & {name: "ysf2", value: i, enabled: true}, field3: #Field & {name: "ysf3", value: true, enabled: true}}, items: []}
                                              backup: #Level4 & {name: "ysbak_\(i)", nested: #Level5 & {id: "ysbn_\(i)", field1: #Field & {n
field2: #Field & {name: "ysbf2", value: i, enabled: true}, field3: #Field & {name: "ysbf3", value: false, enabled: true}}, items: []}
                                              meta: #Meta & {tag: "ysm_\(i)", priority: i}
                                      }
                                      labels: #Labels & {env: "staging", region: "asia", tier: "free"}
                              }
                              extra: #ExtraLabels & {owner: "xown_\(i)", team: "xteam_\(i)", project: "xproj_\(i)"}
                      }
              }
      },
]

heavyResult: {
      one:    {for i in list.Range(0, 100, 1) {"item_\(i)": _items[i]}}
      two:    {for i in list.Range(100, 200, 1) {"item_\(i)": _items[i]}}
      three:  {for i in list.Range(200, 300, 1) {"item_\(i)": _items[i]}}
      four:   {for i in list.Range(300, 400, 1) {"item_\(i)": _items[i]}}
      five:   {for i in list.Range(400, 500, 1) {"item_\(i)": _items[i]}}
      six:    {for i in list.Range(500, 600, 1) {"item_\(i)": _items[i]}}
      seven:  {for i in list.Range(600, 700, 1) {"item_\(i)": _items[i]}}
      eight:  {for i in list.Range(700, 800, 1) {"item_\(i)": _items[i]}}
      nine:   {for i in list.Range(800, 900, 1) {"item_\(i)": _items[i]}}
      ten:    {for i in list.Range(900, 1000, 1) {"item_\(i)": _items[i]}}
}

What did you expect to see?

cue cmd show-static should execute almost instantly since it only outputs a simple static struct {"one":1,"two":2} and does not reference module.heavyResult at all.

Expected timing:

  • show-static: ~0.1s (no heavy computation needed)
  • show-heavy: ~2s (heavy computation required)

What did you see instead?

Both commands take approximately the same time (~2s), because CUE evaluates the entire package including all imported modules regardless of what the command actually uses:

$ time cue cmd show-static
{"one":1,"two":2}

real    0m1.880s
user    0m2.862s
sys     0m0.178s

$ time cue cmd show-heavy
["one","two","three","four","five","six","seven","eight","nine","ten"]

real    0m2.242s
user    0m3.209s
sys     0m0.216s

But if I comment everything related to heavyResult in ext_tools.cue like this

package main

import (
	"encoding/json"
	"tool/cli"

	// "github.com/selfuryon/test/module"
)

static: {
	one: 1
	two: 2
}

// keys: [for name, _ in module.heavyResult {name}]

command: "show-static": print: cli.Print & {
	text: json.Marshal(static)
}

// command: "show-heavy": print: cli.Print & {
// 	text: json.Marshal(keys)
// }

I get this results:

$ time cue cmd show-static
{"one":1,"two":2}

real    0m0.010s
user    0m0.002s
sys     0m0.008s

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions