fix router examples
This commit is contained in:
1 parent
7e3c45eb7e
commit
e83866b986
6 files changed
+77
-52
No files matched your search
@@ -1 +1,2 @@
|
|||||||
dist/
|
dist/
|
||||||
|
static
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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();
|
||||||
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in new issue
Block a user