/
shmachilin
/
MathCore
Обзор
Документация
Войти
/
shmachilin
/
MathCore
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
Tests/Benchmarks/StringSplitTest.cs
53 строки
1 KB
Павел
Рефакторинг нового способа задания коллекций
28 ноя 2023, 00:45
28 ноя 2023, 00:45
d6c3478
Код
Авторство
О чём код?
using System.Globalization; using System.Text; namespace Benchmarks; [MemoryDiagnoser] public class StringSplitTest { private static char[] __Separators = [':', '|', '$', ';']; private static readonly CultureInfo __Culture = CultureInfo.CurrentCulture; private static readonly string __DataString = Enumerable .Range(1, 50) .Aggregate( new StringBuilder(), (s, _) => s.AppendFormat("Value{0}={0};", Math.PI * 1000), s => { s.Length--; return s.ToString(); }); [Benchmark(Baseline = true)] public double Split() { var result = 0d; foreach (var s in __DataString.Split(';')) result += double.Parse(s.Split('=')[1]); return result; } [Benchmark] public double StringRefSplit() { var result = 0d; var culture = __Culture; foreach (var s in __DataString.AsStringPtr().Split(';')) result += s.GetValueDouble(__Culture); return result; } [Benchmark] public double StringRefSplitMany() { var result = 0d; var separators = __Separators; var culture = __Culture; foreach (var s in __DataString.AsStringPtr().Split(separators)) result += s.GetValueDouble(culture); return result; } }