[MemoryDiagnoser]public class DMesh3ScenarioBenchmark{private const int N = 2_000_000; // 模拟大规模几何操作private Random rand = new Random();[Benchmark]public void List_AddRemoveAndAccess(){var list = new List<int>();var removedIndices = new List<int>();// 1. 动态添加for (int i = 0; i < N; i++){list.Add(i);}// 2. 随机删除 10% 元素,模拟 gapfor (int i = 0; i < N / 10; i++){int idx = rand.Next(list.Count);removedIndices.Add(list[idx]);list.RemoveAt(idx);}// 3. 遍历访问long sum = 0;foreach (var v in list)sum += v;}[Benchmark]public void DVector_AddRemoveAndAccess(){var dvec = new DVector<int>();var removedIndices = new List<int>();// 1. 动态添加for (int i = 0; i < N; i++)dvec.Add(i);// 2. 随机删除 10% 元素,保留 gapfor (int i = 0; i < N / 10; i++){int idx = rand.Next(dvec.size);if (dvec[idx] != 0) // 假设 0 表示空位{removedIndices.Add(dvec[idx]);dvec[idx] = 0; // 模拟 gap}}// 3. 遍历访问,跳过空位long sum = 0;for (int i = 0; i < dvec.size; i++)if (dvec[i] != 0)sum += dvec[i];}}static void Main(string[] args){var summary = BenchmarkRunner.Run<DMesh3ScenarioBenchmark>();
}
安装包:
dotnet add package BenchmarkDotNetdotnet add package geometry3Sharp
性能测试结果: