Some checks failed
Update All Top Ranking Issues / update_top_ranking_issues (push) Has been cancelled
Triage Project Sync (#84) / Sync triage project (push) Has been cancelled
release_nightly / notify_on_failure (push) Has been cancelled
release_nightly / check_style (push) Has been cancelled
release_nightly / run_tests_windows (push) Has been cancelled
release_nightly / clippy_windows (push) Has been cancelled
release_nightly / bundle_linux_aarch64 (push) Has been cancelled
release_nightly / bundle_linux_x86_64 (push) Has been cancelled
release_nightly / bundle_mac_aarch64 (push) Has been cancelled
release_nightly / bundle_mac_x86_64 (push) Has been cancelled
release_nightly / bundle_windows_aarch64 (push) Has been cancelled
release_nightly / bundle_windows_x86_64 (push) Has been cancelled
release_nightly / build_nix_linux_x86_64 (push) Has been cancelled
release_nightly / build_nix_mac_aarch64 (push) Has been cancelled
release_nightly / update_nightly_tag (push) Has been cancelled
Hotfix Review Monitor / check-hotfix-reviews (push) Has been cancelled
Stale PR Review Reminder / check-stale-prs (push) Has been cancelled
Update Weekly Top Ranking Issues / update_top_ranking_issues (push) Has been cancelled
Bump collab-staging Tag / update-collab-staging-tag (push) Has been cancelled
compliance_check / scheduled_compliance_check (push) Has been cancelled
Single-commit orphan branch: full zed-industries/zed @ 8c74db0 source tree with a 3-file patch applied (no upstream history). Patch (crates/gpui_linux/src/linux/wayland/): - serial.rs: add SerialKind::KeyboardEnter - client.rs: store wl_keyboard.enter serial; add latest_serial_of() - window.rs: activate() uses keyboard-enter serial (Mutter focus gate) Mutter honors window activation only when the token carries the keyboard- focus serial from wl_keyboard.enter; GPUI used a stale mouse-press serial. See docs/tray-window-focus-wayland.md in logiguard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
145 lines
3.5 KiB
Rust
145 lines
3.5 KiB
Rust
use criterion::{BenchmarkId, Criterion, black_box, criterion_group, criterion_main};
|
|
use gpui::rgba;
|
|
use language::build_highlight_map;
|
|
use theme::SyntaxTheme;
|
|
|
|
fn syntax_theme(highlight_names: &[&str]) -> SyntaxTheme {
|
|
SyntaxTheme::new(highlight_names.iter().enumerate().map(|(i, name)| {
|
|
let r = ((i * 37) % 256) as u8;
|
|
let g = ((i * 53) % 256) as u8;
|
|
let b = ((i * 71) % 256) as u8;
|
|
let color = rgba(u32::from_be_bytes([r, g, b, 0xff]));
|
|
(name.to_string(), color.into())
|
|
}))
|
|
}
|
|
|
|
static SMALL_THEME_KEYS: &[&str] = &[
|
|
"comment", "function", "keyword", "string", "type", "variable",
|
|
];
|
|
|
|
static LARGE_THEME_KEYS: &[&str] = &[
|
|
"attribute",
|
|
"boolean",
|
|
"comment",
|
|
"comment.doc",
|
|
"constant",
|
|
"constant.builtin",
|
|
"constructor",
|
|
"embedded",
|
|
"emphasis",
|
|
"emphasis.strong",
|
|
"function",
|
|
"function.builtin",
|
|
"function.method",
|
|
"function.method.builtin",
|
|
"function.special.definition",
|
|
"keyword",
|
|
"keyword.control",
|
|
"keyword.control.conditional",
|
|
"keyword.control.import",
|
|
"keyword.control.repeat",
|
|
"keyword.control.return",
|
|
"keyword.modifier",
|
|
"keyword.operator",
|
|
"label",
|
|
"link_text",
|
|
"link_uri",
|
|
"number",
|
|
"operator",
|
|
"property",
|
|
"punctuation",
|
|
"punctuation.bracket",
|
|
"punctuation.delimiter",
|
|
"punctuation.list_marker",
|
|
"punctuation.special",
|
|
"string",
|
|
"string.escape",
|
|
"string.regex",
|
|
"string.special",
|
|
"string.special.symbol",
|
|
"tag",
|
|
"text.literal",
|
|
"title",
|
|
"type",
|
|
"type.builtin",
|
|
"type.super",
|
|
"variable",
|
|
"variable.builtin",
|
|
"variable.member",
|
|
"variable.parameter",
|
|
"variable.special",
|
|
];
|
|
|
|
static SMALL_CAPTURE_NAMES: &[&str] = &[
|
|
"function",
|
|
"keyword",
|
|
"string.escape",
|
|
"type.builtin",
|
|
"variable.builtin",
|
|
];
|
|
|
|
static LARGE_CAPTURE_NAMES: &[&str] = &[
|
|
"attribute",
|
|
"boolean",
|
|
"comment",
|
|
"comment.doc",
|
|
"constant",
|
|
"constant.builtin",
|
|
"constructor",
|
|
"function",
|
|
"function.builtin",
|
|
"function.method",
|
|
"keyword",
|
|
"keyword.control",
|
|
"keyword.control.conditional",
|
|
"keyword.control.import",
|
|
"keyword.modifier",
|
|
"keyword.operator",
|
|
"label",
|
|
"number",
|
|
"operator",
|
|
"property",
|
|
"punctuation.bracket",
|
|
"punctuation.delimiter",
|
|
"punctuation.special",
|
|
"string",
|
|
"string.escape",
|
|
"string.regex",
|
|
"string.special",
|
|
"tag",
|
|
"type",
|
|
"type.builtin",
|
|
"variable",
|
|
"variable.builtin",
|
|
"variable.member",
|
|
"variable.parameter",
|
|
];
|
|
|
|
fn bench_build_highlight_map(c: &mut Criterion) {
|
|
let mut group = c.benchmark_group("build_highlight_map");
|
|
|
|
for (capture_label, capture_names) in [
|
|
("small_captures", SMALL_CAPTURE_NAMES as &[&str]),
|
|
("large_captures", LARGE_CAPTURE_NAMES as &[&str]),
|
|
] {
|
|
for (theme_label, theme_keys) in [
|
|
("small_theme", SMALL_THEME_KEYS as &[&str]),
|
|
("large_theme", LARGE_THEME_KEYS as &[&str]),
|
|
] {
|
|
let theme = syntax_theme(theme_keys);
|
|
group.bench_with_input(
|
|
BenchmarkId::new(capture_label, theme_label),
|
|
&(capture_names, &theme),
|
|
|b, (capture_names, theme)| {
|
|
b.iter(|| build_highlight_map(black_box(capture_names), black_box(theme)));
|
|
},
|
|
);
|
|
}
|
|
}
|
|
|
|
group.finish();
|
|
}
|
|
|
|
criterion_group!(benches, bench_build_highlight_map);
|
|
criterion_main!(benches);
|