sum_tree: Replace rayon with futures (#41586)
Release Notes: - N/A *or* Added/Fixed/Improved ... Co-authored by: Kate <kate@zed.dev>
This commit is contained in:
@@ -3,6 +3,7 @@ use std::ops::Range;
|
||||
use criterion::{
|
||||
BatchSize, BenchmarkId, Criterion, Throughput, black_box, criterion_group, criterion_main,
|
||||
};
|
||||
use gpui::{AsyncApp, TestAppContext};
|
||||
use rand::prelude::*;
|
||||
use rand::rngs::StdRng;
|
||||
use rope::{Point, Rope};
|
||||
@@ -26,10 +27,10 @@ fn generate_random_text(rng: &mut StdRng, len: usize) -> String {
|
||||
str
|
||||
}
|
||||
|
||||
fn generate_random_rope(rng: &mut StdRng, text_len: usize) -> Rope {
|
||||
fn generate_random_rope(rng: &mut StdRng, text_len: usize, cx: &AsyncApp) -> Rope {
|
||||
let text = generate_random_text(rng, text_len);
|
||||
let mut rope = Rope::new();
|
||||
rope.push(&text);
|
||||
rope.push(&text, cx.background_executor());
|
||||
rope
|
||||
}
|
||||
|
||||
@@ -82,11 +83,13 @@ fn rope_benchmarks(c: &mut Criterion) {
|
||||
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
|
||||
let mut rng = StdRng::seed_from_u64(SEED);
|
||||
let text = generate_random_text(&mut rng, *size);
|
||||
let cx = TestAppContext::single();
|
||||
let cx = cx.to_async();
|
||||
|
||||
b.iter(|| {
|
||||
let mut rope = Rope::new();
|
||||
for _ in 0..10 {
|
||||
rope.push(&text);
|
||||
rope.push(&text, cx.background_executor());
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -99,8 +102,10 @@ fn rope_benchmarks(c: &mut Criterion) {
|
||||
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
|
||||
let mut rng = StdRng::seed_from_u64(SEED);
|
||||
let mut random_ropes = Vec::new();
|
||||
let cx = TestAppContext::single();
|
||||
let cx = cx.to_async();
|
||||
for _ in 0..5 {
|
||||
let rope = generate_random_rope(&mut rng, *size);
|
||||
let rope = generate_random_rope(&mut rng, *size, &cx);
|
||||
random_ropes.push(rope);
|
||||
}
|
||||
|
||||
@@ -119,7 +124,9 @@ fn rope_benchmarks(c: &mut Criterion) {
|
||||
group.throughput(Throughput::Bytes(*size as u64));
|
||||
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
|
||||
let mut rng = StdRng::seed_from_u64(SEED);
|
||||
let rope = generate_random_rope(&mut rng, *size);
|
||||
let cx = TestAppContext::single();
|
||||
let cx = cx.to_async();
|
||||
let rope = generate_random_rope(&mut rng, *size, &cx);
|
||||
|
||||
b.iter_batched(
|
||||
|| generate_random_rope_ranges(&mut rng, &rope),
|
||||
@@ -139,7 +146,9 @@ fn rope_benchmarks(c: &mut Criterion) {
|
||||
group.throughput(Throughput::Bytes(*size as u64));
|
||||
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
|
||||
let mut rng = StdRng::seed_from_u64(SEED);
|
||||
let rope = generate_random_rope(&mut rng, *size);
|
||||
let cx = TestAppContext::single();
|
||||
let cx = cx.to_async();
|
||||
let rope = generate_random_rope(&mut rng, *size, &cx);
|
||||
|
||||
b.iter_batched(
|
||||
|| generate_random_rope_ranges(&mut rng, &rope),
|
||||
@@ -160,7 +169,9 @@ fn rope_benchmarks(c: &mut Criterion) {
|
||||
group.throughput(Throughput::Bytes(*size as u64));
|
||||
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
|
||||
let mut rng = StdRng::seed_from_u64(SEED);
|
||||
let rope = generate_random_rope(&mut rng, *size);
|
||||
let cx = TestAppContext::single();
|
||||
let cx = cx.to_async();
|
||||
let rope = generate_random_rope(&mut rng, *size, &cx);
|
||||
|
||||
b.iter(|| {
|
||||
let chars = rope.chars().count();
|
||||
@@ -175,7 +186,9 @@ fn rope_benchmarks(c: &mut Criterion) {
|
||||
group.throughput(Throughput::Bytes(*size as u64));
|
||||
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
|
||||
let mut rng = StdRng::seed_from_u64(SEED);
|
||||
let rope = generate_random_rope(&mut rng, *size);
|
||||
let cx = TestAppContext::single();
|
||||
let cx = cx.to_async();
|
||||
let rope = generate_random_rope(&mut rng, *size, &cx);
|
||||
|
||||
b.iter_batched(
|
||||
|| generate_random_rope_points(&mut rng, &rope),
|
||||
@@ -196,7 +209,9 @@ fn rope_benchmarks(c: &mut Criterion) {
|
||||
group.throughput(Throughput::Bytes(*size as u64));
|
||||
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
|
||||
let mut rng = StdRng::seed_from_u64(SEED);
|
||||
let rope = generate_random_rope(&mut rng, *size);
|
||||
let cx = TestAppContext::single();
|
||||
let cx = cx.to_async();
|
||||
let rope = generate_random_rope(&mut rng, *size, &cx);
|
||||
|
||||
b.iter_batched(
|
||||
|| generate_random_rope_points(&mut rng, &rope),
|
||||
@@ -216,7 +231,9 @@ fn rope_benchmarks(c: &mut Criterion) {
|
||||
group.throughput(Throughput::Bytes(*size as u64));
|
||||
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
|
||||
let mut rng = StdRng::seed_from_u64(SEED);
|
||||
let rope = generate_random_rope(&mut rng, *size);
|
||||
let cx = TestAppContext::single();
|
||||
let cx = cx.to_async();
|
||||
let rope = generate_random_rope(&mut rng, *size, &cx);
|
||||
|
||||
b.iter_batched(
|
||||
|| {
|
||||
|
||||
Reference in New Issue
Block a user