From cddb5f57f8fa3413a6210bdd3a8f687b7dac69b2 Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Tue, 21 Nov 2023 08:10:04 -0500 Subject: [PATCH] printer: rejigger how we use serde_derive The idea is that by bringing derives in via serde's optional feature, it was inhibiting compilation speed[1]. We try to fix that by depending on `serde_derive` as a distinct dependency. It does seem to improve overall compilation time, but only by about 0.5 seconds. With that said, my machine has a lot of cores, so it's possible this will help more on less powerful CPUs. [1]: https://old.reddit.com/r/rust/comments/17rd8ww/faster_compilation_with_the_parallel_frontend_in/k8igjlg/ --- Cargo.lock | 9 +++++---- crates/printer/Cargo.toml | 5 +++-- crates/printer/src/jsont.rs | 7 +++---- crates/printer/src/stats.rs | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 439099b1..d4f58dce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -192,6 +192,7 @@ dependencies = [ "grep-searcher", "log", "serde", + "serde_derive", "serde_json", "termcolor", ] @@ -458,18 +459,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", diff --git a/crates/printer/Cargo.toml b/crates/printer/Cargo.toml index dc63a6cc..4193d3d1 100644 --- a/crates/printer/Cargo.toml +++ b/crates/printer/Cargo.toml @@ -16,7 +16,7 @@ edition = "2021" [features] default = ["serde"] -serde = ["dep:base64", "dep:serde", "dep:serde_json"] +serde = ["dep:base64", "dep:serde", "dep:serde_derive", "dep:serde_json"] [dependencies] base64 = { version = "0.21.4", optional = true } @@ -25,7 +25,8 @@ grep-matcher = { version = "0.1.6", path = "../matcher" } grep-searcher = { version = "0.1.11", path = "../searcher" } log = "0.4.5" termcolor = "1.3.0" -serde = { version = "1.0.188", optional = true, features = ["derive"] } +serde = { version = "1.0.193", optional = true } +serde_derive = { version = "1.0.193", optional = true } serde_json = { version = "1.0.107", optional = true } [dev-dependencies] diff --git a/crates/printer/src/jsont.rs b/crates/printer/src/jsont.rs index 5f67f115..5d901041 100644 --- a/crates/printer/src/jsont.rs +++ b/crates/printer/src/jsont.rs @@ -8,10 +8,7 @@ use std::{borrow::Cow, path::Path}; -use { - base64, - serde::{Serialize, Serializer}, -}; +use {base64, serde::Serializer, serde_derive::Serialize}; use crate::stats::Stats; @@ -132,6 +129,7 @@ where T: AsRef<[u8]>, S: Serializer, { + use serde::Serialize; Data::from_bytes(bytes.as_ref()).serialize(ser) } @@ -140,5 +138,6 @@ where P: AsRef, S: Serializer, { + use serde::Serialize; path.as_ref().map(|p| Data::from_path(p.as_ref())).serialize(ser) } diff --git a/crates/printer/src/stats.rs b/crates/printer/src/stats.rs index 9aa14d46..f1898c0b 100644 --- a/crates/printer/src/stats.rs +++ b/crates/printer/src/stats.rs @@ -10,7 +10,7 @@ use crate::util::NiceDuration; /// When statistics are reported by a printer, they correspond to all searches /// executed with that printer. #[derive(Clone, Debug, Default, PartialEq, Eq)] -#[cfg_attr(feature = "serde", derive(serde::Serialize))] +#[cfg_attr(feature = "serde", derive(serde_derive::Serialize))] pub struct Stats { elapsed: NiceDuration, searches: u64,