当前位置: 首页 > news >正文

中低端网站建设客户网北京十大最靠谱it培训机构

中低端网站建设客户网,北京十大最靠谱it培训机构,西安做网站必达网络,建网站公司 深圳场景 Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化: Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化_java热点函数-CSDN博客 参考以上性能测试工具的使用。 Java开发手册中有这样一条&#xf…

场景

Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化:

Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化_java热点函数-CSDN博客

参考以上性能测试工具的使用。

Java开发手册中有这样一条:

【推荐】避免 Random 实例被多线程使用,虽然共享该实例是线程安全的,但会因竞争同一 seed导致的性能下降。

说明:Random 实例包括 java.util.Random 的实例或者 Math.random()的方式。

正例:在 JDK7 之后,可以直接使用 API ThreadLocalRandom,而在 JDK7 之前,

需要编码保证每个线程持有一个单独的 Random 实例。

Math.random() 底层确实是使用 Random 类来实现的。‌

Math.random()在底层调用了java.util.Random类的nextDouble()方法。

Random类的核心在于其内部维护了一个种子(seed),这个种子是随机数生成算法的起点。

相同的种子会生成相同的随机数序列。在创建Random对象时,如果不提供种子,则默认使用

系统时间作为种子,因此每次创建新的Random对象时,由于系统时间的不同,生成的随机数序列

也会不同。

而Random 在多线程下会因为竞争种⼦(seed)而导致性能下降,而ThreadLocalRandom 则不会出现这种情况,

因此在多线程环境下 ThreadLocalRandom 的性能会比Random 好很多。

注:

博客:
霸道流氓气质-CSDN博客

实现

接下来我们来测试⼀下 ThreadLocalRandom 和 Random 性能差异,测试代码如下:

import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;//测试完成时间
@BenchmarkMode(Mode.AverageTime)
//设置统计结果的时间单位
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 2,time = 1,timeUnit = TimeUnit.SECONDS)
//测试次数和时间,参数同上
@Measurement(iterations = 5,time = 1,timeUnit = TimeUnit.SECONDS)
//fork一个线程,进行 fork 的次数,可用于类或者方法上。如果 fork 数是 2 的话,则 JMH 会 fork 出两个进程来进行测试。
@Fork(1)
//通过 State 可以指定一个对象的作用范围,JMH 根据 scope 来进行实例化和共享操作。@State 可以被继承使用,
//Scope.Thread:默认的 State,每个测试线程分配一个实例
@State(Scope.Thread)
public class ThreadLocalRandomTest {public static void main(String[] args) throws RunnerException {//启动基准测试Options options = new OptionsBuilder().include(ThreadLocalRandomTest.class.getSimpleName())//要导入的测试类.build();new Runner(options).run();//执行测试}@Benchmarkpublic void randomTest(){int count = 0;Random random = new Random();for (int i = 0; i < 1000; i++) {count += random.nextInt(10);}}@Benchmarkpublic void threadLocalRandomTest(){int count = 0;ThreadLocalRandom localRandom = ThreadLocalRandom.current();for (int i = 0; i < 1000; i++) {count += localRandom.nextInt(10);}}
}

测试结果:

//Benchmark                                    Mode  Cnt      Score      Error  Units
//ThreadLocalRandomTest.randomTest             avgt    5  10221.461 ± 1329.015  ns/op
//ThreadLocalRandomTest.threadLocalRandomTest  avgt    5   2887.904 ±  472.645  ns/op

从上述结果可以看出ThreadLocalRandom的性能⽐Random的性能⼤约⾼ 3.5倍,

因此在多线程情况下要尽量使⽤ ThreadLocalRandom。

http://www.ysxn.cn/news/325.html

相关文章:

  • 阿里云上的网站建设网页在线代理翻墙
  • 襄阳棋牌网站建设重庆关键词排名推广
  • 唯品会网站开发技术分析外包公司和劳务派遣的区别
  • 有免费做门户网站吗做直销去哪里找客户
  • 做电影网站犯法吗指数工具
  • 网站开发设计师的工作b站推广入口
  • 帮别人做网站需要什么能力seo网站有哪些
  • 做电商网站有什语言好专业的seo排名优化
  • 魏县专业做网站做网站建设优化的公司排名
  • 本地建站discuz搜索引擎seo关键词优化效果
  • 找哪里做网站关键词点击排名软件
  • 网站制作最新技术网页模板免费下载
  • 手机网站建设最新报价代做百度收录排名
  • 武昌做网站哪家好广州seo外包
  • 手机上管理wordpress影视网站怎么优化关键词排名
  • 石龙做网站建网站建设
  • 一个企业做网站推广的优势无锡网站建设seo
  • 长沙网站seo推广公司企业网站排名优化
  • 孝感市门户网网站seo 优化
  • 建网站什么赚钱厨师培训
  • 国际新闻最近新闻军事全域seo
  • 卖书的网站怎么做最新足球赛事
  • 做服装外贸的网站建设互联网销售平台有哪些
  • 西安做兼职网站免费crm
  • 模板王网站网站收录查询站长工具
  • 网站运营怎么做优化网站链接的方法
  • 郑州小程序外包谷歌seo软件
  • 做商城网站会不会被攻击网站seo推广平台
  • 温州网蚁网络科技有限公司baike seotl
  • 公司网站优化外包网络推广公司简介模板