2010年12月20日

不要为了面向对象而面向对象,为了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 阅读(5090) 评论(85) 推荐(7) 编辑

导航