Improve bench mark suite
This commit is contained in:
parent
5464c467e9
commit
60bee6441f
1 changed files with 23 additions and 2 deletions
|
@ -1,5 +1,5 @@
|
|||
use criterion::{Bencher, BenchmarkId};
|
||||
use editor::{Editor, EditorMode, MultiBuffer};
|
||||
use editor::{Editor, EditorMode, MultiBuffer, actions::MoveDown};
|
||||
use gpui::{AppContext, Focusable as _, TestAppContext, TestDispatcher};
|
||||
use project::Project;
|
||||
use rand::{Rng as _, SeedableRng as _, rngs::StdRng};
|
||||
|
@ -7,11 +7,24 @@ use settings::SettingsStore;
|
|||
use ui::IntoElement;
|
||||
use util::RandomCharIter;
|
||||
|
||||
fn editor_with_one_long_line(_bencher: &mut Bencher<'_>, args: &(String, TestAppContext)) {
|
||||
let (text, cx) = args;
|
||||
let mut cx = cx.clone();
|
||||
let buffer = cx.update(|cx| MultiBuffer::build_simple(&text, cx));
|
||||
|
||||
let cx = cx.add_empty_window();
|
||||
let _editor = cx.update(|window, cx| {
|
||||
let editor = cx.new(|cx| Editor::new(EditorMode::full(), buffer, None, window, cx));
|
||||
window.focus(&editor.focus_handle(cx));
|
||||
editor
|
||||
});
|
||||
}
|
||||
|
||||
fn editor_render(bencher: &mut Bencher<'_>, cx: &TestAppContext) {
|
||||
let mut cx = cx.clone();
|
||||
let buffer = cx.update(|cx| {
|
||||
let mut rng = StdRng::seed_from_u64(1);
|
||||
let text_len = rng.gen_range(1000..10000);
|
||||
let text_len = rng.gen_range(10000..90000);
|
||||
if rng.r#gen() {
|
||||
let text = RandomCharIter::new(&mut rng)
|
||||
.take(text_len)
|
||||
|
@ -31,6 +44,7 @@ fn editor_render(bencher: &mut Bencher<'_>, cx: &TestAppContext) {
|
|||
|
||||
bencher.iter(|| {
|
||||
cx.update(|window, cx| {
|
||||
editor.update(cx, |editor, cx| editor.move_down(&MoveDown, window, cx));
|
||||
let mut view = editor.clone().into_any_element();
|
||||
let _ = view.request_layout(window, cx);
|
||||
let _ = view.prepaint(window, cx);
|
||||
|
@ -64,6 +78,13 @@ pub fn benches() {
|
|||
&cx,
|
||||
editor_render,
|
||||
);
|
||||
|
||||
let text = String::from_iter(["char"; 100000]);
|
||||
criterion.bench_with_input(
|
||||
BenchmarkId::new("editor_with_one_long_line", "(String, TestAppContext )"),
|
||||
&(text, cx),
|
||||
editor_with_one_long_line,
|
||||
);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue