From edba570664b952facde43fd0414e60f0a42851da Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Mon, 18 Mar 2024 23:06:34 -0700 Subject: HOT SALE: 15% off your build times! This was achieved by running maintainers/buildtime_report.sh on the build directory of a meson build, then asking "why the heck is json eating our build times", and strategically moving the json using bits out of widely included headers. It turns out that putting literally any metrics whatsoever into the build had immediate and predictable results. Results are 1382.5s frontend time -> 1175.4s frontend time, back end time approximately invariant. Related: https://git.lix.systems/lix-project/lix/issues/159 Change-Id: I7edea95c8536203325c8bb4dae5f32d727a21b2d --- src/libutil/logging-json.hh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/libutil/logging-json.hh (limited to 'src/libutil/logging-json.hh') diff --git a/src/libutil/logging-json.hh b/src/libutil/logging-json.hh new file mode 100644 index 000000000..8263ad707 --- /dev/null +++ b/src/libutil/logging-json.hh @@ -0,0 +1,23 @@ +#pragma once +///@file logging-json.hh +/// +///@brief Logging functions for json specifically, split due to the cost of +///including nlohmann. + +#include "logging.hh" + +#include + +namespace nix { + +std::optional parseJSONMessage(const std::string & msg); + +bool handleJSONLogMessage(nlohmann::json & json, + const Activity & act, std::map & activities, + bool trusted); + +bool handleJSONLogMessage(const std::string & msg, + const Activity & act, std::map & activities, + bool trusted); + +}; -- cgit v1.2.3