public void FasterGetPrimaryFluorescentXrayIntensityTest() { var sp = new Stopwatch(); sp.Start(); var c = new Composition(); c[79] = 0.5; c[47] = 0.5; var elements = c.Select(c1 => Elements.Get(c1.AtomicNumber)).ToArray(); var spec = fluorescent.Conditions.TubeSpectrum; var compiled = new PreprocessedDatabase(db, elements, spec.Region, spec.Division); fluorescent.Database = compiled; Action<string, LineInfo> output = (name, li) => Console.WriteLine(name + ":\t{0:e4}", fluorescent.GetPrimaryFluorescentXrayIntensity(c, li)); var lineGroups = db.LineGroups.Where(lg => c.Contains(lg.AtomicNumber)); var q = from lg in lineGroups from l in lg.Lines select new LineInfo(lg.AtomicNumber, lg, l); foreach (var li in q) output(li.Name, li); sp.Stop(); Console.WriteLine(sp.Elapsed); }