/
dashytka
/
Benchmark
Обзор
Документация
Войти
/
dashytka
/
Benchmark
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
cs
63 строки
2 KB
dashytka
create cs
20 дек 2025, 23:52
20 дек 2025, 23:52
a4e776e
Код
Авторство
О чём код?
using System; using System.Diagnostics; using System.Text; using NUnit.Framework; namespace StructBenchmarking; public class Benchmark : IBenchmark { public double MeasureDurationInMs(ITask task, int repetitionCount) { GC.Collect(); GC.WaitForPendingFinalizers(); task.Run(); var stopwatch = Stopwatch.StartNew(); for (var i = 0; i < repetitionCount; i++) { task.Run(); } stopwatch.Stop(); return (double)stopwatch.ElapsedMilliseconds / repetitionCount; } } [TestFixture] public class RealBenchmarkUsageSample { private class StringBuilderTask : ITask { public void Run() { var sb = new StringBuilder(); for (var i = 0; i < 10000; i++) { sb.Append('a'); } _ = sb.ToString(); } } private class StringConstructorTask : ITask { public void Run() { _ = new string('a', 10000); } } [Test] public void StringConstructorFasterThanStringBuilder() { var repetitionCount = 1000; var benchmark = new Benchmark(); var stringBuilderTime = benchmark.MeasureDurationInMs(new StringBuilderTask(), repetitionCount); var stringConstructorTime = benchmark.MeasureDurationInMs(new StringConstructorTask(), repetitionCount); Assert.That(stringConstructorTime, Is.LessThan(stringBuilderTime)); } }