GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — perf: optimize startup, search and HTTP navigation by antonreshetov · Pull Request #937 · massCodeIO/massCode

Conversation

@antonreshetov

@antonreshetov antonreshetov commented Sep 16, 2026

Copy link
Copy Markdown
Member

Summary

Improve startup, search, memory use, and HTTP navigation for large libraries:

  • Tokenize repeated words and lines once, avoid redundant fragment parsing and retained copies of search text, and update indexes incrementally after content edits.
  • Prepare search indexes and vault checks in batches so other actions can proceed; skip unnecessary legacy Notes asset scans at startup.
  • Virtualize HTTP navigation and eliminate repeated tree allocations and per-node document scans.
  • Add isolated benchmark vaults, measurement tools, and a shared HTTP development server; remove the superseded demo servers.
  • Allow the perf conventional commit type.

Measurements

Internal synthetic-library tests on an Apple M4 Pro with approximately 30,000 records:

Scenario Before After
Startup into Code 4.33 s 1.83 s
Startup into Notes 4.44 s 1.91 s
Startup into HTTP 4.86 s 2.15 s
First Code search, 10,000 snippets 13.79 s 1.95 s
First Notes search, 10,000 notes 4.42 s 0.88 s
Exact HTTP sidebar filtering, 10,000 requests 22–24 s 7–13 ms
Retained JavaScript memory after Code and Notes searches 1,036 MiB 560 MiB

Startup results use 36 alternating original/current build launches across two library sizes and three spaces, with identical profile/vault copies and a warmed filesystem cache. Search and filtering compare historical sessions; memory uses a focused before/after experiment. Search measures API processing, filtering measures list updates, and startup ends at the selected item's open event. These are not input-to-screen measurements. Results vary with content and hardware.

Validation

  • 218 scoped tests passed during review, plus two regression tests for HTTP benchmark readiness. Both regression tests fail on the previous implementation and pass after the fix.
  • Scoped ESLint, main TypeScript and production renderer builds passed; diff checks are clean.
  • Completed 36 startup measurements and six HTTP runtime remeasurements after correcting the readiness gate.
  • Reviewed storage/search/API and renderer/Electron/benchmark changes. The additional HTTP benchmark readiness finding is fixed.

Separate follow-up

The known drag-source lifecycle and scroll-preservation fixes remain in fix/tree-drag-scroll and are intentionally excluded from this PR. Benchmark reports and release drafts are local, gitignored artifacts.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
antonreshetov added 30 commits September 15, 2026 11:05
@antonreshetov
feat(http): consolidate local development servers and QA endpoints
5063d3b
@antonreshetov
test(http): cover development server contracts and lifecycle
0c5f552
@antonreshetov
docs(http): document shared development server in Russian
ed2f85d
@antonreshetov
feat(benchmark): record isolated app and API performance metrics
de6221a
@antonreshetov
feat(benchmark): add isolated vault generator and pilot reports
7f454da
@antonreshetov
docs(benchmark): document Russian pilot protocol and measurement limits
c7d8c1f
@antonreshetov
fix(search): avoid redundant search index tokenization
dd610e3
@antonreshetov
feat(benchmark): profile search phases and main process delays
340732e
@antonreshetov
docs(benchmark): explain search comparison protocol and limits
42323d5
@antonreshetov
fix(search): update indexed records after body edits
1ff75d1
@antonreshetov
feat(benchmark): compare edits and searches across runtime builds
b154bff
@antonreshetov
docs(benchmark): document runtime and large record comparisons
99ac09f
@antonreshetov
fix(search): yield while preparing full-text search indexes
462714c
@antonreshetov
feat(benchmark): capture first-search CPU and responsiveness metrics
ebc719d
@antonreshetov
docs(benchmark): explain first-search responsiveness measurements
bb67997
@antonreshetov
fix(ui): avoid per-node CSS variable document scans
d0a3de5
@antonreshetov
fix(http): avoid repeated tree model allocations
b3f261e
@antonreshetov
feat(ui): add virtual tree rows with pinned interactions
72df515
@antonreshetov
fix(http): virtualize sidebar navigation trees
a5994f9
@antonreshetov
feat(benchmark): record startup timeline and first-search memory
97a2be0
@antonreshetov
fix(storage): yield during vault doctor previews
ca6afb4
@antonreshetov
docs(benchmark): explain startup and memory measurement limits
28ccdff
@antonreshetov
feat(benchmark): profile retained search allocations
eb1d1cb
@antonreshetov
fix(search): avoid retaining joined document copies
3b664b0
@antonreshetov
docs(benchmark): explain search heap profiling and memory limits
2a17185
@antonreshetov
fix(notes): skip background asset scans without legacy files
c8ced4f
@antonreshetov
docs(benchmark): clarify startup matrix and lazy notes loading
ff7f856
@antonreshetov
fix(storage): avoid repeated fragment parsing allocations
e827e9a
@antonreshetov
feat(benchmark): add a varied source corpus
855ae05
@antonreshetov
feat(benchmark): measure sequential HTTP runtime requests
820adb3
antonreshetov added 4 commits September 16, 2026 12:31
@antonreshetov
fix(search): tokenize repeated lines once per document
c53c58d
@antonreshetov
docs(benchmark): document line deduplication tradeoffs
d4d9df6
@antonreshetov
fix(benchmark): wait for HTTP vault reconciliation
84b729c
@antonreshetov
chore(commitlint): allow perf commits
607292a
@antonreshetov antonreshetov self-assigned this Sep 16, 2026
@antonreshetov
antonreshetov merged commit 9bfc3a4 into main Sep 16, 2026
@antonreshetov
antonreshetov deleted the feat/performance-benchmarks branch September 16, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@antonreshetov antonreshetov

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@antonreshetov
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.