diff options
| -rw-r--r-- | site/index.html | 2 | ||||
| -rw-r--r-- | site/pure.mjs | 2 | ||||
| -rw-r--r-- | src/lib.rs | 10 | ||||
| -rw-r--r-- | src/state.rs | 4 |
4 files changed, 15 insertions, 3 deletions
diff --git a/site/index.html b/site/index.html index 97b5997..5ef2cf6 100644 --- a/site/index.html +++ b/site/index.html @@ -22,7 +22,7 @@ <section class='bench'> <h2>bench</h2> - <input name='iters' value='100000'> + <input name='iters' value='1000'> <button>bench</button> <p class='results'></p> </section> diff --git a/site/pure.mjs b/site/pure.mjs index 03b5996..bc3f8a4 100644 --- a/site/pure.mjs +++ b/site/pure.mjs @@ -268,6 +268,8 @@ export default async function () { const start = self.performance.now(); for (let i = 0; i < iters; i++) { update(points); + points.sort((a, b) => a.y > b.y); + findPoly3(points); } const end = self.performance.now(); const delta = end - start; @@ -118,6 +118,16 @@ pub fn init() -> JSResult<()> { let perf = window().performance().unwrap(); let start = perf.now(); for _ in 0..iters { + s.points.sort_by(|a, b| { + if a.y > b.y { + std::cmp::Ordering::Greater + } else if a.y == b.y { + std::cmp::Ordering::Equal + } else { + std::cmp::Ordering::Less + } + }); + s.find_poly(); s.update()?; } let end = perf.now(); diff --git a/src/state.rs b/src/state.rs index 09120fb..592f26e 100644 --- a/src/state.rs +++ b/src/state.rs @@ -19,7 +19,7 @@ pub struct State { canvas: HtmlCanvasElement, ctx: CanvasRenderingContext2d, fps: HtmlElement, - points: Vec<Point>, + pub points: Vec<Point>, last_time: Option<f64>, inter_count: u16, } @@ -124,7 +124,7 @@ impl State { Ok(()) } - fn find_poly(&self) -> Vec<&Point> { + pub fn find_poly(&self) -> Vec<&Point> { let p1 = Point::new(0.0, 0.0); let p2 = Point::new(1.0, 0.0); let mut last_line = Line::new(&p1, &p2); |
