关于性能比较的应用误区
2012-03-09 00:00
274 查看
今天周末,就不写太长的文章了,刚不小心看了篇性能比较的文章,有感而就写了此篇。
这年头,好多人都对性能比较产生了兴趣,然后就开始写比较示例,之后就得出了一个正确但误导新手的误区。
本文不是性能比较文章,只说说观点,没有具体的测试数据,相关的性能比较文篇,园子里一搜,都是一堆一堆的。
这里举较常见的说:
1:string和StringBuilder
2:反射和Emit
3:==和String.Equals
通常比较都怎么比?
[b]1:写个测试示例
2:for它个10万百万次
3:看输出时间
4:得出结论
[/b]
结论与“推荐”
后者速度比前者速度快了N倍,然后就开始“推荐”使用后者。
很多学者爱看比较性文章,然而内容他不看,就看“推荐”两字。
然后就盲目“推荐”给自己和周围的人士。
广泛“推荐”及人推人之后的现象
[b]于是现在看很多人的代码,都喜欢:
动不动就来个Stringbuilder。
动不动就来下Emit。
动不动就来次String.Equals。
[/b]
看文章请认准性能临界点
[b]什么是临界点,下面是一个精略的估算次数:
600次循环之前,string比StringBuilder快。
500次循环之前,反射比Emit快。
90000000的循环,才换来:1.6392576秒和1.1163117秒间46.675%的性能差别。
[/b]
应用应该看场景
[b]别动不动就在StringBuiler,或以砖家的身份还在嫌人家的string+="xxx"慢。
别动不动就在Emit,虽然写Emit是个相对难以理解和编写的。
别动不动就在String.Equals,难道你的代码真会循环9千万次?
[/b]
简单说句是什么?
[b]认准你的代码的应用场景,是否会产生大于N百次的临界点,再决定使用哪个。
[/b]
再简单?
[b]通常你的string循环不会超过600次,老实的用string+=“”。
通常你的List<T>的集合不会超过500条,老实的用反射。
通常你的==没什么问题,该用就用。
其它提示:object对象比较时,记得该用object.Equals。
[/b]
本文就到此结束了,欢迎有感者留言。
附加:
最近发布了:CYQ.Data 数据框架 V4.5版本,欢迎收看与使用。
原文链接:
http://www.cnblogs.com/cyq1162/archive/2011/05/08/2040294.html
这年头,好多人都对性能比较产生了兴趣,然后就开始写比较示例,之后就得出了一个正确但误导新手的误区。
本文不是性能比较文章,只说说观点,没有具体的测试数据,相关的性能比较文篇,园子里一搜,都是一堆一堆的。
这里举较常见的说:
1:string和StringBuilder
2:反射和Emit
3:==和String.Equals
通常比较都怎么比?
[b]1:写个测试示例
2:for它个10万百万次
3:看输出时间
4:得出结论
[/b]
结论与“推荐”
后者速度比前者速度快了N倍,然后就开始“推荐”使用后者。
很多学者爱看比较性文章,然而内容他不看,就看“推荐”两字。
然后就盲目“推荐”给自己和周围的人士。
广泛“推荐”及人推人之后的现象
[b]于是现在看很多人的代码,都喜欢:
动不动就来个Stringbuilder。
动不动就来下Emit。
动不动就来次String.Equals。
[/b]
看文章请认准性能临界点
[b]什么是临界点,下面是一个精略的估算次数:
600次循环之前,string比StringBuilder快。
500次循环之前,反射比Emit快。
90000000的循环,才换来:1.6392576秒和1.1163117秒间46.675%的性能差别。
[/b]
应用应该看场景
[b]别动不动就在StringBuiler,或以砖家的身份还在嫌人家的string+="xxx"慢。
别动不动就在Emit,虽然写Emit是个相对难以理解和编写的。
别动不动就在String.Equals,难道你的代码真会循环9千万次?
[/b]
简单说句是什么?
[b]认准你的代码的应用场景,是否会产生大于N百次的临界点,再决定使用哪个。
[/b]
再简单?
[b]通常你的string循环不会超过600次,老实的用string+=“”。
通常你的List<T>的集合不会超过500条,老实的用反射。
通常你的==没什么问题,该用就用。
其它提示:object对象比较时,记得该用object.Equals。
[/b]
本文就到此结束了,欢迎有感者留言。
附加:
最近发布了:CYQ.Data 数据框架 V4.5版本,欢迎收看与使用。
原文链接:
http://www.cnblogs.com/cyq1162/archive/2011/05/08/2040294.html
相关文章推荐
- 关于性能比较的应用误区
- 关于性能比较的应用误区
- 关于性能比较的应用误区
- 关于性能比较的应用误区
- 关于 mina netty activiemq RabbitMq nio 的比较 区别 应用
- 关于MySQL性能的比较
- NVDIMM原理与应用之三:不同Cache模式读写性能比较
- 关于List的遍历、删除某一项性能比较
- C# 关于 xmlreader xmldocument 和xpath 之间的性能比较
- 关于笔记本的CPU和显卡性能比较
- 关于排序算法的一点知识——性能比较
- 关于应用性能检查的几个文章
- 转载网上已篇关于linq to sq,entityframework,ado.net性能比较的文章
- 一之续、A*,Dijkstra,BFS算法性能比较及A*算法的应用
- 一个不错的关于CPU和GPU(CUDA)的性能比较讨论话题
- 方法性能比较的好帮手:CodeTimer的扩展应用
- 关于性能优化的以及int Number uint的比较
- 关于node.js的web框架的应用及并发性能测试 推荐
- 两篇关于stl容器性能比较的文章