博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于性能比较的应用误区
阅读量:6516 次
发布时间:2019-06-24

本文共 988 字,大约阅读时间需要 3 分钟。

今天周末,就不写太长的文章了,刚不小心看了篇性能比较的文章,有感而就写了此篇。

 

这年头,好多人都对性能比较产生了兴趣,然后就开始写比较示例,之后就得出了一个正确但误导新手的误区。

 

本文不是性能比较文章,只说说观点,没有具体的测试数据,相关的性能比较文篇,园子里一搜,都是一堆一堆的。

 

这里举较常见的说:

1:string和StringBuilder

2:反射和Emit

3:==和String.Equals

 

通常比较都怎么比?

1:写个测试示例

2:for它个10万百万次

3:看输出时间

4:得出结论

 

结论与“推荐”

后者速度比前者速度快了N倍,然后就开始“推荐”使用后者。

很多学者爱看比较性文章,然而内容他不看,就看“推荐”两字。

然后就盲目“推荐”给自己和周围的人士。

 

广泛“推荐”及人推人之后的现象

于是现在看很多人的代码,都喜欢:

动不动就来个Stringbuilder。

动不动就来下Emit。

动不动就来次String.Equals。

 

看文章请认准性能临界点

什么是临界点,下面是一个精略的估算次数:

600次循环之前,string比StringBuilder快。

500次循环之前,反射比Emit快。

90000000的循环,才换来:1.6392576秒和1.1163117秒间46.675%的性能差别。

 

应用应该看场景

别动不动就在StringBuiler,或以砖家的身份还在嫌人家的string+="xxx"慢。

别动不动就在Emit,虽然写Emit是个相对难以理解和编写的。

别动不动就在String.Equals,难道你的代码真会循环9千万次?

 

简单说句是什么?

认准你的代码的应用场景,是否会产生大于N百次的临界点,再决定使用哪个。

 

再简单?

通常你的string循环不会超过600次,老实的用string+=“”。

通常你的List<T>的集合不会超过500条,老实的用反射。

通常你的==没什么问题,该用就用。

其它提示:object对象比较时,记得该用object.Equals。

 

本文就到此结束了,欢迎有感者留言。

 

附加:

最近发布了:,欢迎收看与使用。

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2011/05/08/2040294.html

你可能感兴趣的文章
CF 445A DZY Loves Chessboard
查看>>
Cobbler简介
查看>>
恢复 git reset -hard 的误操作
查看>>
菜鸟初始代码旅程——修改记录
查看>>
C# WinForm 文件上传下载
查看>>
【javascript】ajax请求 编码问题导致的ie浏览器在输入中文文字后没有内容,而chrome正常搜到文字...
查看>>
Git分支操作
查看>>
Spring Integration概述
查看>>
[SAP ABAP开发技术总结]权限对象检查
查看>>
RDIFramework.NET ━ 9.6 模块(菜单)管理 ━ Web部分
查看>>
Android安全问题 静音拍照与被拍
查看>>
cocos2d-x 3.1.1 学习笔记[13] listen 监听器
查看>>
定制私人博客
查看>>
WTL介绍
查看>>
应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较(转)
查看>>
放量滞涨,抛出信号
查看>>
BeanFactory not initialized or already closed - call 'refresh' before accessing beans解决办法
查看>>
dSYM 文件分析工具
查看>>
R语言合并data.frame
查看>>
linux主机下的Vmware Workstation配置NAT设置 端口映射-Ubuntu为例
查看>>