151 lines · 4.6 KB · Rust
RawDownload
use editor::{    Editor, EditorMode, MultiBuffer,    actions::{DeleteToPreviousWordStart, SelectAll, SplitSelectionIntoLines},};use gpui::{AppContext as _, BenchAppContext, Focusable as _};use rand::{Rng as _, SeedableRng as _, rngs::StdRng};use settings::SettingsStore;use util::RandomCharIter;use zed_actions::editor::{MoveDown, MoveUp}; #[gpui::bench(    inputs = multi_cursor_line_counts(),    group = "Multi-cursor input",    input_name = "cursors",    sample_size = 10)]fn editor_multi_cursor_input(line_count: &usize, cx: &mut BenchAppContext) {    init_context(cx);     let text = "line:\n".repeat(*line_count);    let buffer = cx.update(|cx| MultiBuffer::build_simple(&text, cx));     let mut window = cx.add_empty_window();    let editor = window.update(|window, cx| {        let editor = cx.new(|cx| {            let mut editor = Editor::new(EditorMode::full(), buffer, None, window, cx);            editor.set_style(editor::EditorStyle::default(), window, cx);            editor.select_all(&SelectAll, window, cx);            editor.split_selection_into_lines(                &SplitSelectionIntoLines {                    keep_selections: true,                },                window,                cx,            );            editor        });        window.focus(&editor.focus_handle(cx), cx);        editor    });     cx.bench_iter(|_| {        window.update(|window, cx| {            editor.update(cx, |editor, cx| {                editor.handle_input("hello world", window, cx);                editor.delete_to_previous_word_start(                    &DeleteToPreviousWordStart {                        ignore_newlines: false,                        ignore_brackets: false,                    },                    window,                    cx,                );                editor.delete_to_previous_word_start(                    &DeleteToPreviousWordStart {                        ignore_newlines: false,                        ignore_brackets: false,                    },                    window,                    cx,                );            });        })    });} #[gpui::bench]fn open_editor_with_one_long_line(cx: &mut BenchAppContext) {    init_context(cx);     let text = String::from_iter(["char"; 1000]);    cx.bench_iter(move |cx| {        let buffer = cx.update(|cx| MultiBuffer::build_simple(&text, cx));         let mut window = cx.add_empty_window();        window.update(|window, cx| {            let editor = cx.new(|cx| {                let mut editor = Editor::new(EditorMode::full(), buffer, None, window, cx);                editor.set_style(editor::EditorStyle::default(), window, cx);                editor            });            window.focus(&editor.focus_handle(cx), cx);            editor        });    });} #[gpui::bench]fn editor_render(cx: &mut BenchAppContext) {    init_context(cx);     let buffer = cx.update(|cx| {        let mut rng = StdRng::seed_from_u64(1);        let text_len = rng.random_range(10000..90000);        if rng.random() {            let text = RandomCharIter::new(&mut rng)                .take(text_len)                .collect::<String>();            MultiBuffer::build_simple(&text, cx)        } else {            MultiBuffer::build_random(&mut rng, cx)        }    });     let mut window = cx.add_empty_window();    let editor = window.update(|window, cx| {        let editor = window.replace_root(cx, |window, cx| {            let mut editor = Editor::new(EditorMode::full(), buffer, None, window, cx);            editor.set_style(editor::EditorStyle::default(), window, cx);            editor        });        window.focus(&editor.focus_handle(cx), cx);        editor    });     let mut move_down = true;    cx.bench_renderer(editor, move |editor, window, cx| {        if move_down {            editor.move_down(&MoveDown, window, cx);        } else {            editor.move_up(&MoveUp, window, cx);        }        move_down = !move_down;    });} fn init_context(cx: &mut BenchAppContext) {    cx.update(|cx| {        let store = SettingsStore::test(cx);        cx.set_global(store);        assets::Assets.load_test_fonts(cx);        theme_settings::init(theme::LoadThemes::JustBase, cx);        editor::init(cx);    });} fn multi_cursor_line_counts() -> Vec<usize> {    let mut line_counts = vec![1000, 10000];    if std::env::var("ZED_BENCH_HUGE").is_ok() {        line_counts.push(100000);    }    line_counts} gpui::bench_group!(    benches,    editor_multi_cursor_input,    open_editor_with_one_long_line,    editor_render);gpui::bench_main!(benches);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t