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
性能测试结果:

#####
愿你一寸一寸地攻城略地,一点一点地焕然一新
#####

浙公网安备 33010602011771号