首页 > 其他分享 >关于性能比较的应用误区

关于性能比较的应用误区

时间:2022-09-29 23:09:30浏览次数:46  
标签:string 性能 Equals 比较 动不动 误区 应用 Emit

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

 

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

 

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

 

这里举较常见的说:

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。

 

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

 

附加:

最近发布了:CYQ.Data 数据框架 V4.5版本,欢迎收看与使用。

 

标签:string,性能,Equals,比较,动不动,误区,应用,Emit
From: https://blog.51cto.com/cyq1162/5724348

相关文章

  • CYQ.Data 数据框架 跨平台应用开发
    为大伙揭开了​​CYQ.Data​​的性能体验,在写数据方面,表现的相当接近原始的ADO.NET操作。​ 那在数据读取方面呢?有兴趣的朋友可自行测试一下。​ 本篇为你揭开的是:​​CY......
  • CYQ.Data 数据框架 性能评测
    最近有网友经常关注​​CYQ.Data​​ 的性能问题,虽然关注,但没发现谁主动的写过和其它框架的性能评测文章。​ 个人平常比较忙一些,这么长久以来,一直也没好好的为​​CYQ.......
  • 在 AWS 上部署单页应用程序的简单自动化方式
    在AWS上部署单页应用程序的简单自动化方式我多次经历过使用S3和Cloudfront部署单页应用程序的繁琐过程,但是,有一种更简单的方法。另外,您将获得一个CI/CD管道。仅......
  • 性能最佳实践
    一个包含一般和特定语言的最佳实践的用户指南,以提高性能。一般做法尽可能地重复使用存根和通道。使用keepalivepings来保持HTTP/2连接在非活动期的活力,以允许初始RPC......
  • Go中使用应用层传输安全(ALTS)的gRPC认证概述。
    ALTS认证Go中使用应用层传输安全(ALTS)的gRPC认证概述。概述应用层传输安全(ALTS)是由Google开发的相互认证和传输加密系统。它用于保护Google基础设施内的RPC通信的安......
  • 浅析EasyCVR平台如何实现视频H.264转H.265在网页端播放以及应用意义
    随着安防视频监控行业的快速发展,几乎所有的摄像头现在都能支持H.264视频编码格式,并且越来越多的摄像头设备也开始支持H.265。相对来说,H.265比H.264有更多的优势,压缩更高、网......
  • Vue 超长列表渲染性能优化
    参考:https://juejin.cn/post/6979865534166728711#heading-3组件懒加载参考:https://github.com/xunleif2e/vue-lazy-component......
  • 夯实基础之tcp优化传输数据性能
    tcp传输数据性能提升在前面介绍的是三次握手和四次挥手的优化策略,接下来主要介绍的是TCP传输数据时的优化策略。TCP连接是由内核维护的,内核会为每个连接建立内存缓......
  • Lua 脚本在 Redis 事务中的应用实践
    Lua脚本在Redis事务中的应用实践使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,......
  • statefulset有状态应用管理
    statefulset介绍StatefulSet(有状态集,缩写为sts)常用于部署有状态的且需要有序启动的应用程序,比如在进行SpringCloud项目容器化时,Eureka的部署是比较适合用StatefulSet部署方......