平时我们的代码规范,性能都是从 公司同事,网上,书上得知的,但是本着授之于鱼不如授之以渔 的想法,这里分享一下 怎么去判断代码的执行性能呢?
可能大家这里会想不就是 获取一下 开始执行的时间,然后执行test方法,然后不就得到了test的执行时间了,容易啊。
但是对于 现实 生产环境的代码 ,就不太适合了
进行性能测试的不同方法放到一个虚拟机里调用,有可能会互相影响,应该分为2个进程去运行,确保没有影响
如果没有预热过程,指标就会缺乏公平性。因为虚拟机在执行的时候,会加载类,解释执行,以及有可能的优化编译(也就是防止因为JIT 对代码的优化 影响实验结果)
这个时候发现一个JMH
其中OPS 是SCORE 代表着每秒操作量。数值越大,性能越好。
不多说,不知道大家知道 String的查找 有几种方法
我第一印象是
String.contains 方法
str.matches(key)
如果考虑 正则表达式的预编译 使用了Pattern.compile
compile.matcher(str).matches()
引入 pom
其中 <jmh.version>1.0</jmh.version>
代码在 公众号 中输入 "JMH" 就能得到项目
执行其中 StringContantStateSimple
就可以得到
其中Score 代表性能高,发现contain 方法比较快,没有预编译的Match(String自带的方法)最慢
这就是其中一个小例子,通过这个例子 可以得到 如果String 查找,请使用 contain方法
如果有什么问题 ,请评论 一起讨论