mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 08:07:49 +00:00
Document::diff only trimmed the common prefix and suffix, so two distant edits on disk became one change spanning everything between them. The caret and scroll position inside that span were mapped to its start, which made the editor jump to the first edit after an agent, formatter or git operation rewrote the file. Diff the changed middle line by line (Myers via similar, 50 ms deadline with a coarser fallback) and emit one change per edited region, trimmed to its differing characters. The frontend DocSync path produces the same per-region changes, so external reloads, local history restores and formatting keep the caret and view in place. Closes #1326 Co-authored-by: ntbang0901 <121003585+ntbang0901@users.noreply.github.com>
98 lines
3.0 KiB
JSON
98 lines
3.0 KiB
JSON
{
|
|
"$comment": "Upper bounds, lower is better. ui: `<scenario>.<metric>` from `pnpm perf` (medians of the measured runs; enforced at CPU 1x only). Latencies are input → start of the first frame showing the result, so ~16.7 ms is 'next frame'. rust: criterion bench id → mean in microseconds, from `pnpm perf:rust` (`plugins/…`: the plugin runtime budgets).",
|
|
"regressionTolerance": 0.2,
|
|
"regressionFloor": 1,
|
|
"ui": {
|
|
"bundle.initialJsKb": 850,
|
|
"bundle.initialCssKb": 60,
|
|
|
|
"startup.readyMs": 400,
|
|
"startup.tbtMs": 50,
|
|
"startup.heapMb": 30,
|
|
"startup.domNodes": 1500,
|
|
|
|
"typing.p95Ms": 20,
|
|
"typing.maxMs": 33,
|
|
"typing.missedFramePct": 2,
|
|
"typing.styleLayoutMsPerKey": 3,
|
|
"typing.mainThreadMsPerKey": 10,
|
|
"typing.tbtMs": 50,
|
|
|
|
"typingLarge.openMs": 200,
|
|
"typingLarge.p95Ms": 20,
|
|
"typingLarge.maxMs": 33,
|
|
"typingLarge.missedFramePct": 2,
|
|
"typingLarge.styleLayoutMsPerKey": 3,
|
|
"typingLarge.mainThreadMsPerKey": 20,
|
|
"typingLarge.tbtMs": 50,
|
|
|
|
"keyRepeat.p95Ms": 20,
|
|
"keyRepeat.maxMs": 33,
|
|
"keyRepeat.missedFramePct": 2,
|
|
"keyRepeat.mainThreadMsPerKey": 16,
|
|
"keyRepeat.tbtMs": 50,
|
|
|
|
"scroll.frameP95Ms": 17.5,
|
|
"scroll.droppedFramesPct": 2,
|
|
"scroll.tbtMs": 50,
|
|
"scroll.jumpMs": 33,
|
|
|
|
"tabs.openSmallMs": 100,
|
|
"tabs.switchP95Ms": 33,
|
|
|
|
"popups.findActionOpenMs": 50,
|
|
"popups.findActionQueryMs": 120,
|
|
"popups.findActionKeyP95Ms": 33,
|
|
"popups.searchEverywhereOpenMs": 50,
|
|
"popups.searchEverywhereQueryMs": 120,
|
|
|
|
"toolWindows.maxMs": 50,
|
|
|
|
"projectTree.expandMs": 50,
|
|
"projectTree.frameP95Ms": 17.5,
|
|
"projectTree.droppedFramesPct": 2,
|
|
"projectTree.arrowKeyP95Ms": 20,
|
|
"projectTree.arrowKeyMissedFramePct": 2,
|
|
|
|
"leaks.heapGrowthMb": 4,
|
|
"leaks.domNodeGrowth": 100,
|
|
"leaks.listenerGrowth": 20
|
|
},
|
|
"rust": {
|
|
"text/open_1mb": 2000,
|
|
"text/apply_keystroke_1mb": 20,
|
|
"text/apply_100_changes_1mb": 1000,
|
|
"text/diff_two_edits_1mb": 10000,
|
|
"text/diff_every_line_1mb": 100000,
|
|
"text/offset_to_pos_round_trip": 5,
|
|
"text/pos_to_byte": 5,
|
|
"text/text_for_save_crlf_1mb": 1000,
|
|
|
|
"syntax_2mb/selection_cached_hit": 5000,
|
|
"syntax_2mb/outline_cached_hit": 10000,
|
|
"syntax_2mb/folding_cached_hit": 1000,
|
|
"syntax_2mb/folding_after_keystroke_incremental": 200000,
|
|
"syntax_2mb/outline_after_keystroke_incremental": 350000,
|
|
|
|
"index_100k/find_files/a": 10000,
|
|
"index_100k/find_files/ordcon": 10000,
|
|
"index_100k/find_files/src/user": 10000,
|
|
"index_100k/find_files/PaymentService": 10000,
|
|
"index_100k/find_dirs/util": 5000,
|
|
"index_100k/find_dirs/src/ui": 5000,
|
|
"index_100k/find_dirs/a": 5000,
|
|
"index_100k/find_symbols/OCo": 15000,
|
|
"index_100k/find_symbols/q": 15000,
|
|
"index_100k/find_symbols/invoiceRepo": 15000,
|
|
"index_100k/find_symbols_types/UsSe": 15000,
|
|
|
|
"search_5k/literal": 100000,
|
|
"search_5k/regex": 100000,
|
|
"search_5k/dense_limit": 20000,
|
|
|
|
"plugins/load_50": 20000,
|
|
"plugins/cold_activation": 30000,
|
|
"plugins/syntax_highlights_2k_lines": 50000
|
|
}
|
|
}
|