首页 新闻 搜索 专区 学院

为什么实现同样功能Lambda表达式更慢

0
[已关闭问题] 关闭于 2016-09-09 08:23

同样是取出Value,测试了下,感觉Lambda表达式更耗时间,求解答

Stopwatch sw = new Stopwatch();
sw.Start();//开始计时

var sj = DTB();//加载数据
int X = 3;
int Y = 9;
//var CH = new KeyValuePair<int, int>(X, Y);//00:00:00.0006309
//chushi = sj[CH];
//chushi = sj.GetVL(X,Y);//00:00:00.0007733
chushi = sj.Where(x => x.Key.Key == X && x.Key.Value == Y).FirstOrDefault().Value;//   00:00:00.0050164
sw.Stop();//结束计时
Console.WriteLine(sw.Elapsed);

 

梦天涯的主页 梦天涯 | 初学一级 | 园豆:103
提问于:2016-09-06 21:48
< >
分享
所有回答(4)
0

先把代码放上来看看

蜗牛往前走 | 园豆:389 (菜鸟二级) | 2016-09-06 21:59
0

Show your code.

dudu | 园豆:38829 (高人七级) | 2016-09-06 22:33
0

题主为什么要纠结这些问题。

你的sj是一个字典吧。

字典的算法是优化过的。

从字典里取值肯定比你没有任何优化来的快。

长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-09-07 08:41

主要是如果按这个速度的话,计算完成大约需要4-5个小时左右

支持(0) 反对(0) 梦天涯 | 园豆:103 (初学一级) | 2016-09-07 08:48

@梦天涯: - -||| (吓尿

多开几个线程吧。

支持(0) 反对(0) 长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-09-07 08:51

@梦天涯: 如果sj是字典,你后面根本没用上字典的性能,你后面的写法又对字典做一次遍历这样能快么?

支持(0) 反对(0) Daniel Cai | 园豆:10374 (专家六级) | 2016-09-07 10:50

@Daniel Cai: 如果传入两个int要提取Dictionary<KeyValuePair<int, int>, string>中的Value的话,要如何做呀,除了new KeyValuePair<int, int>(X, Y)外,有其它取值方法没,求指教,谢谢

支持(0) 反对(0) 梦天涯 | 园豆:103 (初学一级) | 2016-09-07 13:10
0

感觉?

顾晓北 | 园豆:10215 (专家六级) | 2016-09-07 09:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册