C# Dictionary.Keys.Contains(xxx)的性能

非完整测试,因为工作需要,仅测试添加1百万数据耗时,以及从这些数据中查询Keys.Contains(xxx)耗时。

测试结果:

添加一百万个string到Dictionary中耗时大约在600~800ms,使用Dictionary.Keys.Contains(xxx)查询耗时不到1ms(无论查询元素是否包含在Dictionary中,耗时都差不多,都在几百到几十个ticks,10 ticks=1us)。

测试代码:


Dictionary<string, string> dic = new Dictionary<string, string>();
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine("--------add 1M data to dict cost(ms)---------");
for (int i = 0; i < 1000000; i++)
{
    dic[i.ToString()] = (i+1).ToString();
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds+" ms");

Console.WriteLine("---------add 1 data to 1M dict cost(ms)-----------");
sw.Restart();
dic["a"] = "a";
sw.Stop();
Console.WriteLine(sw.ElapsedTicks + " ticks");

Console.WriteLine("---------query Dict.Contains each time cost(ms)---------");
bool res = false;
for (int i = 0; i < 5; i++)
{
    sw.Restart();
    res = dic.Keys.Contains((i + 500000).ToString());
    sw.Stop();
    Console.WriteLine(sw.ElapsedTicks+" ticks");
    Console.WriteLine("xxxxxxxxxx");
}

Console.WriteLine("---------query Dict.Contains (not Contains) each time cost(ms)---------");
bool res1 = false;
for (int i = 0; i < 5; i++)
{
    sw.Restart();
    res1 = dic.Keys.Contains((i + 1000000).ToString());
    sw.Stop();
    Console.WriteLine(sw.ElapsedTicks+" ticks");
    Console.WriteLine("xxxxxxxxxx");
}

 

测试结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值