mirror of
https://github.com/itsjunetime/tdf.git
synced 2026-06-01 23:51:46 -04:00
- Run fmt
- Use built-in async benching - Use custom Resize::None when making ratatui images to save some cycles
This commit is contained in:
+12
-19
@@ -1,25 +1,19 @@
|
||||
mod utils;
|
||||
|
||||
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
|
||||
use utils::{render_doc, render_first_page};
|
||||
|
||||
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
|
||||
|
||||
const FILES: [&str; 2] = [
|
||||
"./benches/example_dictionary.pdf",
|
||||
"./benches/adobe_example.pdf"
|
||||
"benches/example_dictionary.pdf",
|
||||
"benches/adobe_example.pdf"
|
||||
];
|
||||
|
||||
fn render_full(c: &mut Criterion) {
|
||||
for file in FILES {
|
||||
c.bench_with_input(
|
||||
BenchmarkId::new("render_full", file),
|
||||
&file,
|
||||
|b, &file| b.iter(||
|
||||
tokio::runtime::Runtime::new()
|
||||
.unwrap()
|
||||
.block_on(render_doc(file))
|
||||
)
|
||||
);
|
||||
c.bench_with_input(BenchmarkId::new("render_full", file), &file, |b, &file| {
|
||||
b.to_async(tokio::runtime::Runtime::new().unwrap())
|
||||
.iter(|| render_doc(file))
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,18 +22,17 @@ fn render_to_first_page(c: &mut Criterion) {
|
||||
c.bench_with_input(
|
||||
BenchmarkId::new("render_first_page", file),
|
||||
&file,
|
||||
|b, &file| b.iter(||
|
||||
tokio::runtime::Runtime::new()
|
||||
.unwrap()
|
||||
.block_on(render_first_page(file))
|
||||
)
|
||||
|b, &file| {
|
||||
b.to_async(tokio::runtime::Runtime::new().unwrap())
|
||||
.iter(|| render_first_page(file))
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
criterion_group!(
|
||||
name = benches;
|
||||
config = Criterion::default().sample_size(10);
|
||||
config = Criterion::default().sample_size(40);
|
||||
targets = render_full, render_to_first_page
|
||||
);
|
||||
criterion_main!(benches);
|
||||
|
||||
+12
-11
@@ -2,21 +2,24 @@ use std::{hint::black_box, path::Path};
|
||||
|
||||
use crossterm::terminal::WindowSize;
|
||||
use flume::{r#async::RecvStream, unbounded, Sender};
|
||||
use futures_util::stream::StreamExt as _;
|
||||
use ratatui::layout::Rect;
|
||||
use ratatui_image::picker::{Picker, ProtocolType};
|
||||
use tdf::{converter::{run_conversion_loop, ConvertedPage, ConverterMsg}, renderer::{fill_default, start_rendering, RenderError, RenderInfo, RenderNotif}};
|
||||
use futures_util::stream::StreamExt as _;
|
||||
use tdf::{
|
||||
converter::{run_conversion_loop, ConvertedPage, ConverterMsg},
|
||||
renderer::{fill_default, start_rendering, RenderError, RenderInfo, RenderNotif}
|
||||
};
|
||||
|
||||
fn handle_renderer_msg(
|
||||
msg: Result<RenderInfo, RenderError>,
|
||||
pages: &mut Vec<Option<ConvertedPage>>,
|
||||
to_converter_tx: &mut Sender<tdf::converter::ConverterMsg>,
|
||||
to_converter_tx: &mut Sender<tdf::converter::ConverterMsg>
|
||||
) {
|
||||
match msg {
|
||||
Ok(RenderInfo::NumPages(num)) => {
|
||||
fill_default(pages, num);
|
||||
to_converter_tx.send(ConverterMsg::NumPages(num)).unwrap();
|
||||
},
|
||||
}
|
||||
Ok(RenderInfo::Page(info)) => to_converter_tx.send(ConverterMsg::AddImg(info)).unwrap(),
|
||||
Err(e) => panic!("Got error from renderer: {e:?}")
|
||||
}
|
||||
@@ -32,13 +35,13 @@ fn handle_converter_msg(
|
||||
|
||||
pages[num] = Some(page);
|
||||
|
||||
let num_got = pages.iter()
|
||||
.filter(|p| p.is_some())
|
||||
.count();
|
||||
let num_got = pages.iter().filter(|p| p.is_some()).count();
|
||||
|
||||
// we have to tell it to jump to a certain page so that it will actually render it (since
|
||||
// it only renders fanning out from the page that we currently have selected)
|
||||
to_converter_tx.send(ConverterMsg::GoToPage(num_got)).unwrap();
|
||||
to_converter_tx
|
||||
.send(ConverterMsg::GoToPage(num_got))
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
struct RenderState {
|
||||
@@ -66,9 +69,7 @@ fn start_all_rendering(path: impl AsRef<Path>) -> RenderState {
|
||||
width: columns * font_size.0
|
||||
};
|
||||
|
||||
std::thread::spawn(move || {
|
||||
start_rendering(str_path, to_main_tx, from_main_rx, size)
|
||||
});
|
||||
std::thread::spawn(move || start_rendering(str_path, to_main_tx, from_main_rx, size));
|
||||
|
||||
let (to_converter_tx, from_main_rx) = unbounded();
|
||||
let (to_main_tx, from_converter_rx) = unbounded();
|
||||
|
||||
Reference in New Issue
Block a user