fix router examples

This commit is contained in:
Evan Almloff committed 2023-06-24 13:44:22 -07:00
1 parent 7e3c45eb7e
commit e83866b986
6 files changed
+77 -52

No files matched your search

+1
View File
@@ -1 +1,2 @@
dist/ dist/
static
+2 -1
View File
@@ -36,7 +36,8 @@ web = ["gloo", "web-sys", "wasm-bindgen", "gloo-utils", "js-sys"]
[dev-dependencies] [dev-dependencies]
dioxus = { path = "../dioxus" } dioxus = { path = "../dioxus" }
dioxus-ssr = { path = "../ssr" } dioxus-ssr = { path = "../ssr" }
criterion = "0.3" dioxus-router = { path = ".", features = ["ssr"] }
criterion = { verison = "0.5", features = ["async_tokio", "html_reports"] }
[[bench]] [[bench]]
name = "incremental" name = "incremental"
+57 -44
View File
@@ -6,7 +6,7 @@ use dioxus::prelude::*;
use dioxus_router::prelude::*; use dioxus_router::prelude::*;
use criterion::{black_box, criterion_group, criterion_main, Criterion}; use criterion::{black_box, criterion_group, criterion_main, Criterion};
use dioxus_router::incremental::{DefaultRenderer, IncrementalRenderer};
use dioxus_ssr::Renderer; use dioxus_ssr::Renderer;
pub fn criterion_benchmark(c: &mut Criterion) { pub fn criterion_benchmark(c: &mut Criterion) {
@@ -31,43 +31,53 @@ pub fn criterion_benchmark(c: &mut Criterion) {
.build(); .build();
b.iter(|| { b.iter(|| {
for id in 0..100 { tokio::runtime::Runtime::new().unwrap().block_on(async {
for id in 0..10 { for id in 0..1000 {
renderer render_route(
.render(Route::Post { id }, &mut std::io::sink()) &mut renderer,
.unwrap(); Route::Post { id },
&mut tokio::io::sink(),
|_| {},
)
.await
.unwrap();
} }
} })
}) })
}); });
c.bench_function("build 1000 routes no memory cache", |b| { c.bench_function("build 1000 routes no memory cache", |b| {
let mut renderer = IncrementalRenderer::builder(DefaultRenderer { b.to_async(tokio::runtime::Runtime::new().unwrap())
before_body: r#"<!DOCTYPE html> .iter(|| async {
<html lang="en"> let mut renderer = IncrementalRenderer::builder(DefaultRenderer {
<head> before_body: r#"<!DOCTYPE html>
<meta charset="UTF-8"> <html lang="en">
<meta name="viewport" content="width=device-width, <head>
initial-scale=1.0"> <meta charset="UTF-8">
<title>Dioxus Application</title> <meta name="viewport" content="width=device-width,
</head> initial-scale=1.0">
<body>"# <title>Dioxus Application</title>
.to_string(), </head>
after_body: r#"</body> <body>"#
</html>"# .to_string(),
.to_string(), after_body: r#"</body>
}) </html>"#
.static_dir("./static") .to_string(),
.memory_cache_limit(0) })
.invalidate_after(Duration::from_secs(10)) .static_dir("./static")
.build(); .memory_cache_limit(0)
.invalidate_after(Duration::from_secs(10))
b.iter(|| { .build();
for id in 0..1000 { for id in 0..1000 {
renderer render_route(
.render(Route::Post { id }, &mut std::io::sink()) &mut renderer,
Route::Post { id },
&mut tokio::io::sink(),
|_| {},
)
.await
.unwrap(); .unwrap();
} }
}) })
}); });
c.bench_function("build 1000 routes no cache", |b| { c.bench_function("build 1000 routes no cache", |b| {
let mut renderer = Renderer::default(); let mut renderer = Renderer::default();
@@ -94,9 +104,10 @@ pub fn criterion_benchmark(c: &mut Criterion) {
}) })
}); });
c.bench_function("cache static", |b| { c.bench_function("cache static", |b| {
b.iter(|| { b.to_async(tokio::runtime::Runtime::new().unwrap())
let mut renderer = IncrementalRenderer::builder(DefaultRenderer { .iter(|| async {
before_body: r#"<!DOCTYPE html> let mut renderer = IncrementalRenderer::builder(DefaultRenderer {
before_body: r#"<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
@@ -105,16 +116,18 @@ pub fn criterion_benchmark(c: &mut Criterion) {
<title>Dioxus Application</title> <title>Dioxus Application</title>
</head> </head>
<body>"# <body>"#
.to_string(), .to_string(),
after_body: r#"</body> after_body: r#"</body>
</html>"# </html>"#
.to_string(), .to_string(),
}) })
.static_dir("./static") .static_dir("./static")
.build(); .build();
renderer.pre_cache_static_routes::<Route>().unwrap(); pre_cache_static_routes::<Route, _>(&mut renderer)
}) .await
.unwrap();
})
}); });
} }
+13 -5
View File
@@ -7,7 +7,8 @@ use dioxus_router::prelude::*;
use dioxus_ssr::incremental::{DefaultRenderer, IncrementalRendererConfig}; use dioxus_ssr::incremental::{DefaultRenderer, IncrementalRendererConfig};
fn main() { #[tokio::main]
async fn main() {
let mut renderer = IncrementalRendererConfig::new(DefaultRenderer { let mut renderer = IncrementalRendererConfig::new(DefaultRenderer {
before_body: r#"<!DOCTYPE html> before_body: r#"<!DOCTYPE html>
<html lang="en"> <html lang="en">
@@ -27,13 +28,20 @@ fn main() {
.invalidate_after(Duration::from_secs(10)) .invalidate_after(Duration::from_secs(10))
.build(); .build();
renderer.pre_cache_static_routes::<Route>().unwrap(); pre_cache_static_routes::<Route, _>(&mut renderer)
.await
.unwrap();
for _ in 0..1_000_000 { for _ in 0..1_000_000 {
for id in 0..10 { for id in 0..10 {
renderer render_route(
.render(Route::Post { id }, &mut std::io::sink()) &mut renderer,
.unwrap(); Route::Post { id },
&mut tokio::io::sink(),
|_| {},
)
.await
.unwrap();
} }
} }
} }
+1 -1
View File
@@ -9,7 +9,7 @@ use dioxus_ssr::incremental::{
use crate::prelude::*; use crate::prelude::*;
/// Pre-cache all static routes. /// Pre-cache all static routes.
pub async fn pre_cache_static_routes<R: RenderHTML + Send, Rt>( pub async fn pre_cache_static_routes<Rt, R: RenderHTML + Send>(
renderer: &mut IncrementalRenderer<R>, renderer: &mut IncrementalRenderer<R>,
) -> Result<(), IncrementalRendererError> ) -> Result<(), IncrementalRendererError>
where where
+3 -1
View File
@@ -63,7 +63,9 @@ pub mod prelude {
pub use dioxus_router_macro::Routable; pub use dioxus_router_macro::Routable;
#[cfg(feature = "ssr")] #[cfg(feature = "ssr")]
pub use dioxus_ssr::incremental::IncrementalRendererConfig; pub use crate::incremental::*;
#[cfg(feature = "ssr")]
pub use dioxus_ssr::incremental::*;
#[doc(hidden)] #[doc(hidden)]
/// A component with props used in the macro /// A component with props used in the macro