DVector<T>虐哭List<T>

  [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% 元素,模拟 gap
          for (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% 元素,保留 gap
          for (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 BenchmarkDotNet

dotnet add package geometry3Sharp

性能测试结果:
image

posted @ 2025-09-09 22:20  JohnYang819  阅读(10)  评论(0)    收藏  举报