首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    System.currentTimeMillis() 竟然存在性能问题?

    来源:https://dwz.cn/M1NXgypa 在之前的文章中就提到了,System.currentTimeMillis()并非最佳实践。但是令人没想到的是,除了精度问题,竟还存在性能问题。...System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。...可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。如果单线程的调用频次增加(比如达到每毫秒数次的地步),也会观察到类似的情况。...实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap之类的试试看。...不过,在System.currentTimeMillis()的效率没有影响程序整体的效率时,就不必忙着做优化,这只是为极端情况准备的。

    2.9K00

    System.currentTimeMillis() 存在性能问题...

    Java技术栈 www.javastack.cn 关注阅读更多优质文章 作者:LittleMagic 链接:https://www.jianshu.com/p/d2039190b1cb System.currentTimeMillis...可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。 如果单线程的调用频次增加(比如达到每毫秒数次的地步),也会观察到类似的情况。...实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap之类的试试看。...来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis...不过,在System.currentTimeMillis()的效率没有影响程序整体的效率时,就不必忙着做优化,这只是为极端情况准备的。

    1.9K20

    System.currentTimeMillis()存在性能问题

    System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。...可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。如果单线程的调用频次增加(比如达到每毫秒数次的地步),也会观察到类似的情况。...实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap之类的试试看。...来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis...不过,在System.currentTimeMillis()的效率没有影响程序整体的效率时,就完全没有必要做这种优化,这只是为极端情况准备的。

    88510

    雪花算法对System.currentTimeMillis()优化真的有用么?

    ()获取时间,有一种说法是认为System.currentTimeMillis()慢,是因为每次调用都会去跟系统打一次交道,在高并发情况下,大量并发的系统调用容易会影响性能(对它的调用甚至比new一个普通对象都要耗时...()); System.out.println(System.currentTimeMillis() - timer); } } Windows:i5-4590 16G内存 4...核 512固态 Mac: Mac pro 2020 512G固态 16G内存 Linux:deepin系统,虚拟机,160G磁盘,内存8G 单线程环境测试一下 System.currentTimeMillis...linux上由于虚拟机,核数增加的时候,并无太多作用,但是时间对比于直接调用 System.currentTimeMillis()其实是变慢的。...(); } 下面是1千万id,八个线程,测出来调用timeGen()的次数,也就是可以看出时间冲突的次数: 平台/方法 SystemClock.now() System.currentTimeMillis

    69330
    领券