Исторический материал. Измерения и статус относятся к дате исходного отчёта. Перевод сверён с английским оригиналом редакции
61e75e9и не является новой редакцией отчёта.
Измерения записаны 2026-07-20 на darwin/arm64, Apple M1 Max, Go 1.26.5 после исправлений границы доверия проверенного манифеста, принадлежности узлов синтаксическим анализаторам и отмены обработки запросов. Это профиль планировщика на момент записи. Воспроизводимое сравнение наложения до реализации изменений на основе синтаксических деревьев и после неё приведено отдельно в отчёте сравнения. Двоичные профили — воспроизводимые временные результаты, которые хранятся вне репозитория.
GOCACHE=/private/tmp/okf-go-cache-profile go test \
-o /private/tmp/okf-parser-backed-mutation.test ./mutation \
-run '^$' \
-bench '^BenchmarkPlannerRepresentativeTransaction/concepts=10000$' \
-benchtime=1x -benchmem -count=1 \
-cpuprofile /private/tmp/okf-parser-backed-planner-current-cpu.pprof \
-memprofile /private/tmp/okf-parser-backed-planner-current-heap.pprof
go tool pprof -top -nodecount=40 /private/tmp/okf-parser-backed-planner-current-cpu.pprof
go tool pprof -alloc_space -top -nodecount=40 /private/tmp/okf-parser-backed-planner-current-heap.pprof
BenchmarkPlannerRepresentativeTransaction/concepts=10000-10 1 2191598083 ns/op 10001 files/op 3.000 ops/tx 2270499264 B/op 16875859 allocs/op
top, 40 узлов)Duration: 2.72s, Total samples = 3.32s (121.90%)
Showing nodes accounting for 2.73s, 82.23% of 3.32s total
flat flat% sum% cum cum% name
0.44s 13.25% 13.25% 0.44s 13.25% runtime.madvise
0.27s 8.13% 21.39% 0.27s 8.13% runtime.memequal
0.23s 6.93% 28.31% 0.23s 6.93% runtime.usleep
0.19s 5.72% 34.04% 0.19s 5.72% strings.Join
0.18s 5.42% 39.46% 0.18s 5.42% runtime.pthread_cond_wait
0.13s 3.92% 43.37% 0.65s 19.58% bundle.containsConceptID
0.11s 3.31% 46.69% 0.11s 3.31% runtime.pthread_cond_signal
0.10s 3.01% 49.70% 0.27s 8.13% runtime.scanObjectsSmall
0.09s 2.71% 52.41% 0.18s 5.42% runtime.tryDeferToSpanScan
0.08s 2.41% 54.82% 0.26s 7.83% runtime.mallocgcSmallScanNoHeader
0.08s 2.41% 57.23% 0.08s 2.41% runtime.pthread_kill
0.07s 2.11% 59.34% 0.81s 24.40% bundle.(*Bundle).buildGraph
0.07s 2.11% 61.45% 0.25s 7.53% bundle.ConceptID.String
0.06s 1.81% 63.25% 0.06s 1.81% runtime.kevent
0.05s 1.51% 64.76% 0.05s 1.51% runtime.extractHeapBitsSmall
0.05s 1.51% 66.27% 0.14s 4.22% runtime.scanObject
0.04s 1.20% 67.47% 0.05s 1.51% runtime.mspan.writeHeapBitsSmall
0.04s 1.20% 68.67% 0.61s 18.37% runtime.gcDrain
0.04s 1.20% 69.88% 0.05s 1.51% runtime.heapArenaOf
0.03s 0.90% 70.78% 0.03s 0.90% yaml.v3.yaml_parser_parse_node
0.03s 0.90% 71.69% 0.03s 0.90% yaml.v3.yaml_parser_update_buffer
0.03s 0.90% 72.59% 0.03s 0.90% runtime.spanScanOwnership.or
0.03s 0.90% 73.49% 0.38s 11.45% runtime.mallocgc
0.03s 0.90% 74.40% 0.03s 0.90% runtime.memclrNoHeapPointers
0.02s 0.60% 75.00% 0.10s 3.01% goldmark/parser.(*parser).Parse.func1
0.02s 0.60% 75.60% 0.04s 1.20% yaml.v3.yaml_parser_append_tag_directive
0.02s 0.60% 76.20% 0.06s 1.81% yaml.v3.yaml_parser_fetch_value
0.02s 0.60% 76.81% 0.02s 0.60% atomic.Int64.Add
0.02s 0.60% 77.41% 0.02s 0.60% atomic.UnsafePointer.Load
0.02s 0.60% 78.01% 0.03s 0.90% runtime.spanSet.pop
0.02s 0.60% 78.61% 0.02s 0.60% runtime.newBucket
0.02s 0.60% 79.22% 0.02s 0.60% runtime.spanSetScans
0.02s 0.60% 79.82% 0.02s 0.60% runtime.strhash
0.02s 0.60% 80.42% 0.02s 0.60% runtime.typePointers.next
0.01s 0.30% 80.72% 0.17s 5.12% bundle.(*Bundle).loadConceptBytes
0.01s 0.30% 81.02% 0.05s 1.51% bundle.cloneYAMLNode
0.01s 0.30% 81.33% 0.03s 0.90% mutation.(*presentation).indexPathsContext
0.01s 0.30% 81.63% 0.04s 1.20% goldmark/parser.(*parser).addBlockParser
0.01s 0.30% 81.93% 0.02s 0.60% yaml.v3.yaml_parser_fetch_next_token.func1
0.01s 0.30% 82.23% 0.02s 0.60% yaml.v3.yaml_parser_fetch_stream_end
alloc_space, 40 узлов)Showing nodes accounting for 2181.46MB, 92.19% of 2366.24MB total
flat flat% sum% cum cum% name
456.39MB 19.29% 19.29% 456.39MB 19.29% yaml.v3.yaml_insert_token
379.96MB 16.06% 35.35% 379.96MB 16.06% yaml.v3.yaml_parser_initialize
267.40MB 11.30% 46.65% 274.41MB 11.60% goldmark/parser.NewParser
202.03MB 8.54% 55.18% 214.53MB 9.07% yaml.v3.(*parser).node
202.03MB 8.54% 63.72% 202.03MB 8.54% bundle.cloneYAMLNode
144.64MB 6.11% 69.84% 458.52MB 19.38% yaml.v3.newParser
47.63MB 2.01% 71.85% 557.93MB 23.58% bundle.(*Bundle).loadConceptBytes
43.01MB 1.82% 73.67% 43.01MB 1.82% mutation.(*presentation).indexPathsContext
41.86MB 1.77% 75.44% 211.48MB 8.94% bundle.(*Bundle).buildGraph
40MB 1.69% 77.13% 40MB 1.69% yaml.v3.newDecoder
34.50MB 1.46% 78.58% 34.50MB 1.46% yaml.v3.yaml_parser_append_tag_directive
28.03MB 1.18% 79.77% 94.11MB 3.98% yaml.v3.newParserFromReader
25.50MB 1.08% 80.85% 60.50MB 2.56% goldmark/parser.(*parser).Parse.func1
25MB 1.06% 81.90% 25MB 1.06% yaml.v3.yaml_parser_save_simple_key
22.50MB 0.95% 82.85% 22.50MB 0.95% mutation.semanticYAMLContext
22.50MB 0.95% 83.80% 22.50MB 0.95% yaml.v3.read
20.50MB 0.87% 84.67% 21.50MB 0.91% goldmark/parser.(*parser).addBlockParser
19.50MB 0.82% 85.50% 35.50MB 1.50% yaml.v3.yaml_parser_parse_block_mapping_key
19MB 0.80% 86.30% 42.50MB 1.80% yaml.v3.yaml_parser_fetch_stream_start
17MB 0.72% 87.02% 687.55MB 29.06% mutation.(*yamlResolver).matchesNode
17MB 0.72% 87.74% 322.70MB 13.64% mutation.parsePresentationContext
13.66MB 0.58% 88.31% 798.89MB 33.76% bundle.Load
12.50MB 0.53% 88.84% 12.50MB 0.53% yaml.v3.resolve
11.50MB 0.49% 89.33% 253.53MB 10.71% yaml.v3.(*parser).parseChild
10.50MB 0.44% 89.77% 146.52MB 6.19% bundle.Frontmatter.YAMLNode
10MB 0.42% 90.19% 509.30MB 21.52% bundle.ParseDocument
9MB 0.38% 90.57% 516.40MB 21.82% yaml.v3.(*parser).init
8.50MB 0.36% 90.93% 499.30MB 21.10% bundle.ParseFrontmatter
5.09MB 0.22% 91.15% 76.10MB 3.22% bundle.(*Bundle).indexSubresources
5MB 0.21% 91.36% 376.41MB 15.91% mutation.protectedGoldmarkParse
4.50MB 0.19% 91.55% 1414.48MB 59.78% mutation.(*planState).move
2.62MB 0.11% 91.66% 13.12MB 0.55% mutation.(*Overlay).putContext
2.55MB 0.11% 91.77% 15.21MB 0.64% bundle.(*Bundle).ReverseImpactConcept
2.50MB 0.11% 91.87% 112.16MB 4.74% mutation.(*planState).renameFragment
2MB 0.08% 91.96% 65.05MB 2.75% mutation.yamlPlainSafe
1.50MB 0.06% 92.02% 758.10MB 32.04% mutation.relationTargetPatchesContext.func1
1.50MB 0.06% 92.09% 383.91MB 16.22% mutation.rewriteMarkdownDestinationsContext
1.50MB 0.06% 92.15% 123.02MB 5.20% yaml.v3.(*parser).scalar
0.50MB 0.02% 92.17% 631.50MB 26.69% mutation.(*presentation).resolvedScalarPatch
0.50MB 0.02% 92.19% 378.41MB 15.99% mutation.collectMarkdownDestinationsContext
Профиль служит подтверждением измерений, а не жёстким целевым показателем производительности. Основную часть этой транзакции занимают синтаксический разбор и построение семантического графа. Сопутствующий отчёт сравнения исходного и итогового состояния изолирует изменения наложения на одинаковых примерах; данный отчёт планировщика охватывает полный итоговый путь выполнения. Измерения не обосновывают переход на цепочку родительских состояний или HAMT в рамках этапа изменений на основе синтаксических деревьев.