/// <summary> /// Constructor. /// </summary> /// <param name="benchmark">Benchmark.</param> /// <param name="descList">Descriptor list.</param> public BenchmarkTask(BenchmarkBase benchmark, ICollection <BenchmarkOperationDescriptor> descList) { _benchmark = benchmark; _state = new BenchmarkState(); _results = new Dictionary <string, Result>(descList.Count); var totalWeight = 0; var ticksPerSlot = benchmark.ResultBucketInterval * Stopwatch.Frequency / 1000000; if (ticksPerSlot == 0) { throw new Exception("Too low bucket interval: " + benchmark.ResultBucketInterval); } foreach (var desc in descList) { _results[desc.Name] = new Result(benchmark.ResultBucketCount, ticksPerSlot); totalWeight += desc.Weight; } _descs = new BenchmarkOperationDescriptor[totalWeight]; var idx = 0; foreach (var desc in descList) { for (var i = 0; i < desc.Weight; i++) { _descs[idx++] = desc; } } }
/// <summary> /// Constructor. /// </summary> /// <param name="benchmark">Benchmark.</param> public ThroughputTask(BenchmarkBase benchmark) { _benchmark = benchmark; }
/// <summary> /// Constructor. /// </summary> /// <param name="benchmark">Benchmark.</param> /// <param name="dur">Duration.</param> public WarmupTask(BenchmarkBase benchmark, long dur) { _benchmark = benchmark; _dur = dur; }
/// <summary> /// Constructor. /// </summary> /// <param name="benchmark">Benchmark.</param> /// <param name="dur">Duration.</param> public TimeoutTask(BenchmarkBase benchmark, long dur) { _benchmark = benchmark; _dur = dur; }
/// <summary> /// Constructor. /// </summary> /// <param name="benchmark">Benchmark.</param> /// <param name="descList">Descriptor list.</param> public BenchmarkTask(BenchmarkBase benchmark, ICollection<BenchmarkOperationDescriptor> descList) { _benchmark = benchmark; _state = new BenchmarkState(); _results = new Dictionary<string, Result>(descList.Count); var totalWeight = 0; var ticksPerSlot = benchmark.ResultBucketInterval*Stopwatch.Frequency/1000000; if (ticksPerSlot == 0) throw new Exception("Too low bucket interval: " + benchmark.ResultBucketInterval); foreach (var desc in descList) { _results[desc.Name] = new Result(benchmark.ResultBucketCount, ticksPerSlot); totalWeight += desc.Weight; } _descs = new BenchmarkOperationDescriptor[totalWeight]; var idx = 0; foreach (var desc in descList) { for (var i = 0; i < desc.Weight; i++) _descs[idx++] = desc; } }