不要为了面向对象而面向对象,为了lambda而lambda。以统计单词数量为例
摘要:
我对这位作者佩服的五体投地!
蛋疼,上面的代码效率起码是下面的3倍以上,如果重复的单词少,文章内容长的话,慢10倍都很正常。
上面的代码,扣去正则执行时间,运算量是o(n), n代码单词个数,
而下面的代码,运算深度为o((1+2+3+...+n)*n)
还不包括每次都傻不垃圾的new myword, List的add,remove运算操作,
算上gc1,gc2深度的垃圾回收时间,楼主很强大!
直接用word.count++不就行了。
另外楼主貌似不知道,在key,value检索下,Dictionary是o(1)计算深度,
而List的Find是由c#提供的lambda表达式,实际就是遍历一遍List对象,效率也是o(n),
此处的ni为已找到的单词个数,再乘以总个数n, 就可以算出来运算量为 o ( ( 1 + 2 + 3 + ... + n ) * n )
为了面向对象而面向对象,还很自我感觉良好的用了lambda表达式,
而且从我本人一向偏好的省代码角度出发◎,下面的代码要比上面还多14行!
虽说在现在流程配置的电脑上,这两段代码在效率上的优势差 阅读全文
posted @ 2010-12-20 05:12 gongji 阅读(5091) 评论(85) 推荐(7) 编辑