Skip to content

Commit

Permalink
internal/core/debug: report more structure sharing
Browse files Browse the repository at this point in the history
Change to show more structure sharing

This significantly increases diffs between V2 and V3.
However, it is very helpful to visualize the effects
of upcoming improvments to the sharing algorithm.

It also helps minimize the diffs resulting from the
changes to the cycle algorithm.

Issue #2850

Signed-off-by: Marcel van Lohuizen <[email protected]>
Change-Id: I37f9a65469720e8e144e125b1a115b2f264462db
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1202043
Reviewed-by: Matthew Sackman <[email protected]>
Unity-Result: CUE porcuepine <[email protected]>
TryBot-Result: CUEcueckoo <[email protected]>
  • Loading branch information
mpvl committed Oct 1, 2024
1 parent 06141e4 commit a0138fb
Show file tree
Hide file tree
Showing 45 changed files with 13,600 additions and 842 deletions.
48 changes: 48 additions & 0 deletions cue/testdata/benchmarks/cycle.txtar
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,54 @@ Retain: 1
Unifications: 15
Conjuncts: 30
Disjuncts: 26
-- out/evalalpha --
(struct){
sameValues: (struct){
SmustBeF: (struct){
T: (string){ string }
F: (struct){
x: (string){ string }
}
S: ~(sameValues.SmustBeF.F)
}
CmustBeA: (struct){
A: (struct){
x: (#list){
0: (string){ string }
}
}
C: ~(sameValues.CmustBeA.A)
}
}
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -5,9 +5,7 @@
F: (struct){
x: (string){ string }
}
- S: (struct){
- x: (string){ string }
- }
+ S: ~(sameValues.SmustBeF.F)
}
CmustBeA: (struct){
A: (struct){
@@ -15,11 +13,7 @@
0: (string){ string }
}
}
- C: (struct){
- x: (#list){
- 0: (string){ string }
- }
- }
+ C: ~(sameValues.CmustBeA.A)
}
}
}
-- out/eval --
(struct){
sameValues: (struct){
Expand Down
329 changes: 329 additions & 0 deletions cue/testdata/benchmarks/listdedup.txtar
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,335 @@ Retain: 0
Unifications: 53
Conjuncts: 407
Disjuncts: 40
-- out/evalalpha --
(struct){
A: (#struct){ |((#struct){
#steps: ~(#Script)
a: (int){ 1 }
}, (#struct){
#steps: ~(#Script)
a: (int){ 1 }
b: (int){ 2 }
}, (#struct){
#steps: ~(#Script)
b: (int){ 2 }
}) }
B: (struct){
#steps: (#struct){
mount: (#list){
0: (#struct){ |((#struct){
#steps: ~(#Script)
a: (int){ 1 }
}, (#struct){
#steps: ~(#Script)
a: (int){ 1 }
b: (int){ 2 }
}, (#struct){
#steps: ~(#Script)
b: (int){ 2 }
}) }
}
}
}
C: (struct){
#steps: (#struct){
mount: (#list){
0: (#struct){ |((#struct){
#steps: (#struct){
mount: (#list){
0: (#struct){ |((#struct){
#steps: ~(#Script)
a: (int){ 1 }
}, (#struct){
#steps: ~(#Script)
a: (int){ 1 }
b: (int){ 2 }
}, (#struct){
#steps: ~(#Script)
b: (int){ 2 }
}) }
}
}
a: (int){ 1 }
}, (#struct){
#steps: (#struct){
mount: (#list){
0: (#struct){ |((#struct){
#steps: ~(#Script)
a: (int){ 1 }
}, (#struct){
#steps: ~(#Script)
a: (int){ 1 }
b: (int){ 2 }
}, (#struct){
#steps: ~(#Script)
b: (int){ 2 }
}) }
}
}
a: (int){ 1 }
b: (int){ 2 }
}, (#struct){
#steps: (#struct){
mount: (#list){
0: (#struct){ |((#struct){
#steps: ~(#Script)
a: (int){ 1 }
}, (#struct){
#steps: ~(#Script)
a: (int){ 1 }
b: (int){ 2 }
}, (#struct){
#steps: ~(#Script)
b: (int){ 2 }
}) }
}
}
b: (int){ 2 }
}) }
}
}
}
#Script: (#struct){
mount: (list){
}
}
#Task: (#struct){ |((#struct){
#steps: ~(#Script)
a: (int){ 1 }
}, (#struct){
#steps: ~(#Script)
a: (int){ 1 }
b: (int){ 2 }
}, (#struct){
#steps: ~(#Script)
b: (int){ 2 }
}) }
#ref: (#struct){ |((#struct){
a: (int){ 1 }
}, (#struct){
b: (int){ 2 }
}) }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -1,22 +1,13 @@
(struct){
A: (#struct){ |((#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- b: (int){ 2 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ }, (#struct){
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ b: (int){ 2 }
+ }, (#struct){
+ #steps: ~(#Script)
b: (int){ 2 }
}) }
B: (struct){
@@ -23,23 +14,14 @@
#steps: (#struct){
mount: (#list){
0: (#struct){ |((#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- b: (int){ 2 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ }, (#struct){
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ b: (int){ 2 }
+ }, (#struct){
+ #steps: ~(#Script)
b: (int){ 2 }
}) }
}
@@ -52,76 +34,49 @@
#steps: (#struct){
mount: (#list){
0: (#struct){ |((#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- b: (int){ 2 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- b: (int){ 2 }
- }) }
- }
- }
- a: (int){ 1 }
- }, (#struct){
- #steps: (#struct){
- mount: (#list){
- 0: (#struct){ |((#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- b: (int){ 2 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- b: (int){ 2 }
- }) }
- }
- }
- a: (int){ 1 }
- b: (int){ 2 }
- }, (#struct){
- #steps: (#struct){
- mount: (#list){
- 0: (#struct){ |((#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- b: (int){ 2 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ }, (#struct){
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ b: (int){ 2 }
+ }, (#struct){
+ #steps: ~(#Script)
+ b: (int){ 2 }
+ }) }
+ }
+ }
+ a: (int){ 1 }
+ }, (#struct){
+ #steps: (#struct){
+ mount: (#list){
+ 0: (#struct){ |((#struct){
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ }, (#struct){
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ b: (int){ 2 }
+ }, (#struct){
+ #steps: ~(#Script)
+ b: (int){ 2 }
+ }) }
+ }
+ }
+ a: (int){ 1 }
+ b: (int){ 2 }
+ }, (#struct){
+ #steps: (#struct){
+ mount: (#list){
+ 0: (#struct){ |((#struct){
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ }, (#struct){
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ b: (int){ 2 }
+ }, (#struct){
+ #steps: ~(#Script)
b: (int){ 2 }
}) }
}
@@ -136,23 +91,14 @@
}
}
#Task: (#struct){ |((#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
- a: (int){ 1 }
- b: (int){ 2 }
- }, (#struct){
- #steps: (#struct){
- mount: (list){
- }
- }
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ }, (#struct){
+ #steps: ~(#Script)
+ a: (int){ 1 }
+ b: (int){ 2 }
+ }, (#struct){
+ #steps: ~(#Script)
b: (int){ 2 }
}) }
#ref: (#struct){ |((#struct){
-- out/eval --
(struct){
A: (#struct){ |((#struct){
Expand Down
Loading

0 comments on commit a0138fb

Please sign in to comment.