From 97c6b6bea65f243b95788492bdfcb4b07017a277 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Wed, 22 Apr 2026 09:11:33 +0200 Subject: [PATCH] Save compression/decompression time --- image_analysis/MXAnalysisWithoutFPGA.cpp | 3 ++- reader/JFJochReaderImage.cpp | 5 +++++ tools/jfjoch_lite_perf_test.cpp | 2 +- tools/jfjoch_process.cpp | 19 ++++++++++--------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/image_analysis/MXAnalysisWithoutFPGA.cpp b/image_analysis/MXAnalysisWithoutFPGA.cpp index ca4c0c0e..0db81bfb 100644 --- a/image_analysis/MXAnalysisWithoutFPGA.cpp +++ b/image_analysis/MXAnalysisWithoutFPGA.cpp @@ -47,7 +47,8 @@ void MXAnalysisWithoutFPGA::Analyze(DataMessage &output, std::vector &i const auto compression_start_time = std::chrono::steady_clock::now(); const uint8_t *image_ptr = output.image.GetUncompressedPtr(image); const auto compression_end_time = std::chrono::steady_clock::now(); - output.compression_time_s = std::chrono::duration(compression_end_time - compression_start_time).count(); + if (output.image.GetCompressionAlgorithm() != CompressionAlgorithm::NO_COMPRESSION) + output.compression_time_s = std::chrono::duration(compression_end_time - compression_start_time).count(); switch (output.image.GetMode()) { case CompressedImageMode::Int8: diff --git a/reader/JFJochReaderImage.cpp b/reader/JFJochReaderImage.cpp index b5c98073..6dc75a3c 100644 --- a/reader/JFJochReaderImage.cpp +++ b/reader/JFJochReaderImage.cpp @@ -49,7 +49,12 @@ void JFJochReaderImage::ProcessInputImage(const CompressedImage &in_image) { std::vector tmp; + const auto compression_start_time = std::chrono::steady_clock::now(); const uint8_t *image_ptr = in_image.GetUncompressedPtr(tmp); + const auto compression_end_time = std::chrono::steady_clock::now(); + + if (in_image.GetCompressionAlgorithm() != CompressionAlgorithm::NO_COMPRESSION) + message.compression_time_s = std::chrono::duration(compression_end_time - compression_start_time).count(); switch (in_image.GetMode()) { case CompressedImageMode::Int8: diff --git a/tools/jfjoch_lite_perf_test.cpp b/tools/jfjoch_lite_perf_test.cpp index 8a7193a7..8fedf7a4 100644 --- a/tools/jfjoch_lite_perf_test.cpp +++ b/tools/jfjoch_lite_perf_test.cpp @@ -200,7 +200,7 @@ int main(int argc, char **argv) { if (output.status.max_receive_delay) logger.Info("Max delay {}", output.status.max_receive_delay.value()); - logger.Info("Per-image time: (mean; microseconds): compression {:.0f} preprocess {:.0f} spot finding {:.0f} indexing {:.0f} refinement {:.0f} prediction {:.0f} integration {:.0f} total {:.0f}", + logger.Info("Per-image time: (mean; microseconds): decompression {:.0f} preprocess {:.0f} spot finding {:.0f} indexing {:.0f} refinement {:.0f} prediction {:.0f} integration {:.0f} total {:.0f}", output.processing_time.compression * 1e6, output.processing_time.preprocessing * 1e6, output.processing_time.spot_finding * 1e6, diff --git a/tools/jfjoch_process.cpp b/tools/jfjoch_process.cpp index d08e45c6..92b4e414 100644 --- a/tools/jfjoch_process.cpp +++ b/tools/jfjoch_process.cpp @@ -432,7 +432,7 @@ int main(int argc, char **argv) { msg.image_collection_efficiency = img->ImageData().image_collection_efficiency; msg.storage_cell = img->ImageData().storage_cell; msg.user_data = img->ImageData().user_data; - + msg.compression_time_s = img->ImageData().compression_time_s; total_uncompressed_bytes += msg.image.GetUncompressedSize(); auto image_start_time = std::chrono::high_resolution_clock::now(); @@ -766,14 +766,15 @@ int main(int argc, char **argv) { } auto image_mean_time = plots.GetMeanProcessingTime(); - logger.Info("Per-image time: (mean; microseconds): preprocess {:.0f} spot finding {:.0f} indexing {:.0f} refinement {:.0f} prediction {:.0f} integration {:.0f} total {:.0f}", - image_mean_time.preprocessing * 1e6, - image_mean_time.spot_finding * 1e6, - image_mean_time.indexing * 1e6, - image_mean_time.refinement * 1e6, - image_mean_time.bragg_prediction * 1e6, - image_mean_time.integration * 1e6, - image_mean_time.processing * 1e6); + logger.Info("Per-image time: (mean; microseconds): decompress {:.0f} preprocess {:.0f} spot finding {:.0f} indexing {:.0f} refinement {:.0f} prediction {:.0f} integration {:.0f} total {:.0f}", + image_mean_time.compression * 1e6, + image_mean_time.preprocessing * 1e6, + image_mean_time.spot_finding * 1e6, + image_mean_time.indexing * 1e6, + image_mean_time.refinement * 1e6, + image_mean_time.bragg_prediction * 1e6, + image_mean_time.integration * 1e6, + image_mean_time.processing * 1e6); if (rotation_indexer_ret.has_value()) { auto latt = rotation_indexer_ret->lattice;