From 533f7959f785f9af0a7ef1a668a3c0a1ecd9080e Mon Sep 17 00:00:00 2001 From: Dmitry Dygalo Date: Tue, 11 Mar 2025 15:46:57 +0100 Subject: [PATCH] perf: Slightly improve performance of HTML serialization Signed-off-by: Dmitry Dygalo --- CHANGELOG.md | 4 ++++ css-inline/src/html/serializer.rs | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a277b18..7bfba9bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Performance + +- Slightly improve performance of HTML serialization. + ## [0.14.4] - 2024-12-27 ### Changed diff --git a/css-inline/src/html/serializer.rs b/css-inline/src/html/serializer.rs index 20a26b13..477bff57 100644 --- a/css-inline/src/html/serializer.rs +++ b/css-inline/src/html/serializer.rs @@ -171,12 +171,12 @@ impl<'a, W: Write> HtmlSerializer<'a, W> { .expect("Invalid substring") .as_bytes(), )?; - match part { - "&" => self.writer.write_all(b"&")?, - "\u{00A0}" => self.writer.write_all(b" ")?, - "<" => self.writer.write_all(b"<")?, - ">" => self.writer.write_all(b">")?, - _ => unreachable!("Only the variants above are searched"), + match (part.as_bytes()[0] & 0b0000_1110) >> 1 { + 1 => self.writer.write_all(b" ")?, + 3 => self.writer.write_all(b"&")?, + 6 => self.writer.write_all(b"<")?, + 7 => self.writer.write_all(b">")?, + _ => unreachable!(), }; last_end = start.checked_add(part.len()).expect("Size overflow"); }