Skip to content

Commit 2e9eef8

Browse files
Describe the lazy-hydration cost model in standalone terms
1 parent 66cce22 commit 2e9eef8

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

README.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,13 @@ Semantics of deferred nodes (the usual native lazy-object rules):
145145
`DeepClone\HydrationContext` object that holds them. Abandoned graphs are
146146
reclaimed by the cycle collector.
147147

148-
Cost model, measured against the previous fully-eager implementation
149-
(20k-node graphs, PHP 8.4 release build): closure-rich graphs hydrate 4-6x
150-
faster on creation and partial consumption, occupy 2-3x less memory while
148+
Cost model (20k-node graphs, PHP 8.4 release build): compared with
149+
resolving every closure inside the call, deferral makes closure-rich
150+
graphs 4-6x faster to create and partially consume, 2-3x smaller while
151151
untouched (lazy shells plus the slot index weigh less than materialized
152-
closures), and tear down about 2x faster when dropped untouched. A fully
153-
traversed graph pays a comparable total (+12% in the worst measured case),
154-
at first touch instead of inside the call. Graphs without closure markers
155-
take the eager path bit for bit.
152+
closures), and about 2x faster to tear down when dropped untouched. A
153+
fully traversed graph pays a comparable total, at first touch instead of
154+
inside the call. Graphs without closure markers take the eager path.
156155

157156
`deepclone_hydrate()` accepts either an object to hydrate in place or a class
158157
name to instantiate without calling its constructor. By default, PHP `&`

0 commit comments

Comments
 (0)