Хотелось померять скорость вставки строки в разных сценариях с обычной строкой, билдер без выделенного заранее буффера и билдер с буффером.
Если не настраивать параметры теста, то по умолчанию он начинает длинные танцы с бубном, я так и не дождался результата за 5 минут и не понятно когда ждать завершения — прервал.
Если настраивать на минимализм, то выдает результат быстро но не нравится погрешность результата
и немного странно что пустой метод работает медленнее чем вставка ( на самом деле высокая погрешность ), погрешность у вставки могу понять — требуется выделение памяти и оно сильно зависит от разных условий.
Но вот почему пустой метод имеет такую высокую погрешность не понятно.
| Method | Mean | Error | StdDev | Median | Min | Max |
|-------------------------------- |---------:|----------:|----------:|----------:|----------:|---------:|
| InsertStr | 41.84 us | 183.25 us | 121.21 us | 3.6000 us | 2.9000 us | 386.8 us |
| InsertStringBuilder | 95.50 us | 446.81 us | 295.54 us | 1.8500 us | 0.7000 us | 936.6 us |
| InsertStringBuilderWithCapacity | 41.91 us | 192.41 us | 127.27 us | 1.4500 us | 0.7000 us | 404.1 us |
| Empty | 81.96 us | 390.78 us | 258.48 us | 0.2000 us | 0.1000 us | 817.6 us |
Вопрос — какие настройки оптимальны по точности и скорости выполнения теста ( хотелось чтобы тест выполнялся не более минуты )
[SimpleJob(RunStrategy.ColdStart, launchCount: 1, warmupCount: 0, targetCount: 10)]
[MinColumn, MaxColumn, MeanColumn, MedianColumn]
public class BenchmarkTest
{
string str;
StringBuilder stringBuilder;
StringBuilder stringBuilderWithCapacity;
const string baseStr = "1234567890";
const int repeatCount = 10;
public BenchmarkTest()
{
str = string.Join(string.Empty, Enumerable.Repeat(baseStr, repeatCount));
stringBuilder = new StringBuilder(str);
stringBuilderWithCapacity = new StringBuilder(baseStr.Length * (repeatCount + 1));
stringBuilderWithCapacity.Append(str);
}
[Benchmark]
public void InsertStr()
{
str.Insert(4, "5");
}
[Benchmark]
public void InsertStringBuilder()
{
stringBuilder.Insert(4, "5");
}
[Benchmark]
public void InsertStringBuilderWithCapacity()
{
stringBuilderWithCapacity.Insert(4, "5");
}
[Benchmark]
public void Empty()
{
}
}
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов