From 23612d412e4a39e47e9beb3f29879ded602e5179 Mon Sep 17 00:00:00 2001
From: Stephen <webmaster@scd31.com>
Date: Sat, 11 Feb 2023 18:29:57 -0400
Subject: [PATCH] use fnv hashmap. Since the hashmap is written to only from
 the disk, it is safe to use. we get more speed

---
 Cargo.lock  | 1 +
 Cargo.toml  | 1 +
 src/blog.rs | 8 ++++----
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index b5e6a1c..182e8a7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -776,6 +776,7 @@ name = "org_flux"
 version = "0.1.0"
 dependencies = [
  "anyhow",
+ "fnv",
  "image",
  "orgize",
  "syntect",
diff --git a/Cargo.toml b/Cargo.toml
index 3c6d58b..6081198 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -14,3 +14,4 @@ tokio = { version = "1.0", features = ["full"] }
 warp = "0.3"
 time = { version = "0.3", features = ["macros", "formatting"] }
 image = "0.24.5"
+fnv = "1.0"
diff --git a/src/blog.rs b/src/blog.rs
index e9171b4..66728dc 100644
--- a/src/blog.rs
+++ b/src/blog.rs
@@ -1,5 +1,5 @@
 use anyhow::{bail, Error};
-use std::collections::HashMap;
+use fnv::FnvHashMap;
 use warp::hyper::StatusCode;
 
 use crate::{
@@ -56,7 +56,7 @@ impl Blog {
 }
 
 pub struct RenderedBlog {
-    pages: HashMap<UrlPath, Response>,
+    pages: FnvHashMap<UrlPath, Response>,
     not_found: Response,
 }
 
@@ -76,7 +76,7 @@ impl TryFrom<Blog> for RenderedBlog {
         b.pages.sort();
         b.posts.sort();
 
-        let mut pages = HashMap::new();
+        let mut pages = FnvHashMap::default();
 
         for p in &b.posts {
             let body = dress_page(&p.title, &p.html()?, &b.pages, &b.favicon);
@@ -130,7 +130,7 @@ impl TryFrom<Blog> for RenderedBlog {
 }
 
 fn insert_path(
-    pages: &mut HashMap<UrlPath, Response>,
+    pages: &mut FnvHashMap<UrlPath, Response>,
     path: &str,
     value: Response,
 ) -> anyhow::Result<()> {
-- 
GitLab