Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Text;
- using System.Diagnostics;
- using NUnit.Framework;
- namespace StructBenchmarking
- {
- public class Benchmark : IBenchmark
- {
- public double MeasureDurationInMs(ITask task, int repetitionCount)
- {
- GC.Collect();
- GC.WaitForPendingFinalizers();
- task.Run();
- var result = 0.0;
- for (var i = 0; i < repetitionCount; i++)
- {
- Stopwatch stopWatch = new Stopwatch();
- stopWatch.Start();
- task.Run();
- stopWatch.Stop();
- result += stopWatch.Elapsed.TotalMilliseconds;
- }
- return result / repetitionCount;
- }
- }
- public class StringBuilderMaker : ITask
- {
- public void Run()
- {
- var str = new StringBuilder();
- for (var i = 0; i < 10000; i++)
- str.Append("a");
- }
- }
- public class StringMaker : ITask
- {
- public void Run()
- {
- var str = new string('a', 10000);
- }
- }
- [TestFixture]
- public class RealBenchmarkUsageSample
- {
- [Test]
- public void StringConstructorFasterThanStringBuilder()
- {
- var benchmark = new Benchmark();
- var stringMaker = new StringMaker();
- var stringBuilderMaker = new StringBuilderMaker();
- stringMaker.Run();
- stringBuilderMaker.Run();
- var testCount = 100;
- var stringResult = benchmark.MeasureDurationInMs(stringMaker, testCount);
- var stringBuilderResult = benchmark.MeasureDurationInMs(stringBuilderMaker, testCount);
- Assert.Less(stringBuilderResult, stringResult);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement