Table of Contents
A new module for dealing with histogram data has been added, it is now being used internally in Mantid to store data in various workspace types.
An internal change that is a preliminary step for “Instrument-2.0” can yield slight to moderate performance improvements of the following algorithms (and other algorithms that use one of these): AppendSpectra, ApplyTransmissionCorrection, CalculateEfficiency, CalculateFlatBackground, ConjoinSpectra, ConvertAxesToRealSpace, ConvertAxisByFormula, ConvertEmptyToTof, ConvertSpectrumAxis2, ConvertUnitsUsingDetectorTable, CorelliCrossCorrelate, DetectorEfficiencyVariation, EQSANSTofStructure, FilterEvents, FindCenterOfMassPosition, FindCenterOfMassPosition2, FindDetectorsOutsideLimits, GetEi, IntegrateByComponent, LorentzCorrection, MultipleScatteringCylinderAbsorption, NormaliseToMonitor, Q1D2, Q1DWeighted, RadiusSum, RemoveBackground, RemoveBins, RemoveMaskedSpectra, RingProfile, SANSDirectBeamScaling, SumSpectra, TOFSANSResolution, UnwrapMonitor, UnwrapSNS, VesuvioCalculateMS, and WeightedMeanOfWorkspace.
The introduction of the HistogramData module may have influenced the performance of some algorithms and many workflows. Some algorithms (listed below) experience a speedup and reduced memory consumption. If you experience unusual slowdowns, please contact the developer team.
The following algorithms were adapted and show a noticeable speedup:
In most of these cases memory consumption has also reduced. The performance improvements will vary from machine to machine, and will be different or even non-existent depending on the type and size of the input workspace and algorithm parameters.
The following algorithms were adapted and do not show any speedup, however the memory consumption may have reduced slightly:
AbsorptionCorrection, CalculateEfficiency, CalculateFlatBackground, CalculateZscore, ConvertEmptyToTof, ConvertToMatrixWorkspace, CrossCorrelate, ExtractFFTSpectrum, FindPeaks, GeneratePeaks, PolarizationCorrection, Rebin2D, RebinByTimeAtSample, ReflectometryTransform, StripPeaks
Algorithms that are run after one of those listed above may also benefit from the improved data sharing that lead to speedup and reduced memory consumption. In some cases, however, follow-up algorithms may run slower (typically this can happen for algorithms that do in-place modification of data). However, the total runtime (sum of the runtimes of the improved and the degraded algorithm) should be unchanged in the worst case.
A race condition when accessing a singleton from multiple threads was fixed.
Log file buffers are no longer flushed by default for each newline received, increasing the speed of some system tests on Windows by 4.5x.