From aeb6795b3bb0361ac68bc793e602234a673a6215 Mon Sep 17 00:00:00 2001 From: Yuki Matsuzawa Date: Sat, 5 Sep 2026 09:05:31 +0900 Subject: [PATCH] Optimize spectrum bin accumulation Replace repeated dictionary lookups with TryGetValue in the imaging spectrum binning hot path. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- src/MSDIAL5/MsdialCore/Utility/DataAccess.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/MSDIAL5/MsdialCore/Utility/DataAccess.cs b/src/MSDIAL5/MsdialCore/Utility/DataAccess.cs index a3af51809..1f80b71dc 100644 --- a/src/MSDIAL5/MsdialCore/Utility/DataAccess.cs +++ b/src/MSDIAL5/MsdialCore/Utility/DataAccess.cs @@ -1044,14 +1044,14 @@ public static List CalcAccumulatedMs2Spectra(IDataProvider provide var massSpectra = spectrum.Spectrum; foreach (var s in massSpectra) { var massBin = (int)(s.Mz * 1000); - if (!spectrumBin.ContainsKey(massBin)) { + if (!spectrumBin.TryGetValue(massBin, out var binnedSpectrum)) { spectrumBin[massBin] = new double[3] { s.Mz, s.Intensity, s.Intensity }; } else { - spectrumBin[massBin][1] += s.Intensity; - if (spectrumBin[massBin][2] < s.Intensity) { - spectrumBin[massBin][0] = s.Mz; - spectrumBin[massBin][2] = s.Intensity; + binnedSpectrum[1] += s.Intensity; + if (binnedSpectrum[2] < s.Intensity) { + binnedSpectrum[0] = s.Mz; + binnedSpectrum[2] = s.Intensity; } } } @@ -1072,15 +1072,15 @@ public static List CalcAccumulatedMs2Spectra(IDataProvider provide var massSpectra = spectrum.Spectrum; foreach (var s in massSpectra) { var massBin = (int)(s.Mz * 1000); - if (!spectrumBin.ContainsKey(massBin)) { + if (!spectrumBin.TryGetValue(massBin, out var binnedSpectrum)) { // [accurate mass, intensity, max intensity] spectrumBin[massBin] = new double[3] { s.Mz, s.Intensity, s.Intensity }; } else { - spectrumBin[massBin][1] += s.Intensity; - if (spectrumBin[massBin][2] < s.Intensity) { - spectrumBin[massBin][0] = s.Mz; - spectrumBin[massBin][2] = s.Intensity; + binnedSpectrum[1] += s.Intensity; + if (binnedSpectrum[2] < s.Intensity) { + binnedSpectrum[0] = s.Mz; + binnedSpectrum[2] = s.Intensity; } } }