GlobalPerf() { Hardware = new Lazy <HardwareInfo>(() => new HardwareInfo(sink)); blobReadBytes = rates.GetOrAdd("blob_read_bytes", new MultiIntervalStats(Intervals)); blobReadEvents = rates.GetOrAdd("blob_reads", new MultiIntervalStats(Intervals)); jobs = rates.GetOrAdd("jobs_completed", new MultiIntervalStats(Intervals)); decodedPixels = rates.GetOrAdd("decoded_pixels", new MultiIntervalStats(Intervals)); encodedPixels = rates.GetOrAdd("encoded_pixels", new MultiIntervalStats(Intervals)); job_times = percentiles.GetOrAdd("job_times", new TimingsSink()); decode_times = percentiles.GetOrAdd("decode_times", new TimingsSink()); encode_times = percentiles.GetOrAdd("encode_times", new TimingsSink()); job_other_time = percentiles.GetOrAdd("job_other_time", new TimingsSink()); blob_read_times = percentiles.GetOrAdd("blob_read_times", new TimingsSink()); collect_info_times = percentiles.GetOrAdd("collect_info_times", new TimingsSink()); sourceMegapixels = percentiles.GetOrAdd("source_pixels", new PixelCountSink()); outputMegapixels = percentiles.GetOrAdd("output_pixels", new PixelCountSink()); sourceWidths = percentiles.GetOrAdd("source_width", new ResolutionsSink()); sourceHeights = percentiles.GetOrAdd("source_height", new ResolutionsSink()); outputWidths = percentiles.GetOrAdd("output_width", new ResolutionsSink()); outputHeights = percentiles.GetOrAdd("output_height", new ResolutionsSink()); scalingRatios = percentiles.GetOrAdd("scaling_ratio", new FlatSink(1000)); sourceAspectRatios = percentiles.GetOrAdd("source_aspect_ratio", new FlatSink(1000)); outputAspectRatios = percentiles.GetOrAdd("output_aspect_ratio", new FlatSink(1000)); }