当前位置:网站首页>System. Currenttimemillis() and system Nanotime (), which is faster? Don't use it wrong!
System. Currenttimemillis() and system Nanotime (), which is faster? Don't use it wrong!
2022-07-04 16:36:00 【Java technology stack】
author : A fabricated belief
source :https://segmentfault.com/a/1190000041276485
Java There are two ways to get a timestamp :System.currentTimeMillis()
and System.nanoTime()
, Their usage scenarios are different , At present, some articles on the Internet have some one-sided descriptions about the performance of these two methods , This article hopes to give a simple final answer .
System.currentTimeMillis() There are performance issues ?
The answer is No . The performance difference between the two methods depends on the operating system .
Windows:
stay Windows Next ,System.currentTimeMillis()
Than System.nanoTime()
Much faster , This is because Windows The system only provides a cache variable for the former , The latter is to get the count from the bottom of the hardware in real time .
So if your production environment is Windows, Please avoid using
System.nanoTime()
.
Linux:
stay Linux Next , There is little difference in the execution time between the two , Whether it's single threaded or multi-threaded .
Different virtual machine implementations can lead to performance differences
Today's cloud hosts mainly include Xen and KVM Two ways of implementation , Some articles on the Internet found that they have performance differences in taking system time .
When your virtual machine uses Xen when , Taking time will be KVM More than ten times . However, the above also provides solutions to such problems .
You need to write a special class to improve System.currentTimeMillis() Performance ?
Unwanted . That's painting a snake to add feet .
My test code
My test code is as follows , Without any dependency , It can be used directly javac Compile and run . Readers who are interested can try :
import java.util.ArrayList;import java.util.List;import java.util.function.Consumer;public class TimePerformance { public static final int LOOP_COUNT = 9999999; public static final int THREAD_COUNT = 30; public static void main(String[] args) { Runnable millisTest = () -> { long start = System.currentTimeMillis(); for (int i = 0; i < LOOP_COUNT; i++) { System.currentTimeMillis(); } long end = System.currentTimeMillis(); System.out.printf("%s : %f ns per call\n", Thread.currentThread().getName(), ((double)end - start) * 1000000 / LOOP_COUNT); }; Runnable nanoTest = () -> { long start = System.currentTimeMillis(); for (int i = 0; i < LOOP_COUNT; i++) { System.nanoTime(); } long end = System.currentTimeMillis(); System.out.printf("%s : %f ns per call\n", Thread.currentThread().getName(), ((double)end - start) * 1000000 / LOOP_COUNT); }; Consumer<Runnable> testing = test -> { System.out.println("Single thread test:"); test.run(); System.out.println(THREAD_COUNT + " threads test:"); List<Thread> threads = new ArrayList<>(); for (int i = 0; i < THREAD_COUNT; i++) { Thread t = new Thread(test); t.start(); threads.add(t); } // Wait for all threads to finish threads.forEach(thread -> { try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } }); }; System.out.println("//// Test System.nanoTime()"); testing.accept(nanoTest); System.out.println("//// Test System.currentTimeMillis()"); testing.accept(millisTest); }}
Because I'm using Windows, So in the execution output System.nanoTime()
Obviously very slow .
I won't release the specific output content , Because it has no reference value , Most production environments use Linux.
Recent hot article recommends :
1.1,000+ Avenue Java Arrangement of interview questions and answers (2022 The latest version )
2. Explode !Java Xie Cheng is coming ...
3.Spring Boot 2.x course , It's too complete !
4. Don't write about the explosion on the screen , Try decorator mode , This is the elegant way !!
5.《Java Development Manual ( Song Mountain version )》 The latest release , Download it quickly !
I think it's good , Don't forget to like it + Forward !
边栏推荐
- [native JS] optimized text rotation effect
- Talking about Net core how to use efcore to inject multiple instances of a context annotation type for connecting to the master-slave database
- Accounting regulations and professional ethics [7]
- Audio and video technology development weekly | 252
- 165 webmaster online toolbox website source code / hare online tool system v2.2.7 Chinese version
- Market trend report, technical innovation and market forecast of taillight components in China
- Blood cases caused by Lombok use
- Find numbers
- Laravel simply realizes Alibaba cloud storage + Baidu AI Cloud image review
- Cut! 39 year old Ali P9, saved 150million
猜你喜欢
Overview of convolutional neural network structure optimization
Common knowledge of unity Editor Extension
Understand Alibaba cloud's secret weapon "dragon architecture" in the article "science popularization talent"
Intranet penetrating FRP: hidden communication tunnel technology
Preliminary practice of niuke.com (10)
Opencv learning -- geometric transformation of image processing
对人胜率84%,DeepMind AI首次在西洋陆军棋中达到人类专家水平
Neuf tendances et priorités du DPI en 2022
Big God explains open source buff gain strategy live broadcast
Vscode setting outline shortcut keys to improve efficiency
随机推荐
Accounting regulations and professional ethics [9]
[North Asia data recovery] a database data recovery case where the disk on which the database is located is unrecognized due to the RAID disk failure of HP DL380 server
Research Report on market supply and demand and strategy of China's four sided flat bag industry
程序员怎么才能提高代码编写速度?
Market trend report, technical innovation and market forecast of electrochromic glass and devices in China and Indonesia
What is torch NN?
Understand Alibaba cloud's secret weapon "dragon architecture" in the article "science popularization talent"
Can I "reverse" a Boolean value- Can I 'invert' a bool?
Some fields of the crawler that should be output in Chinese are output as none
Final consistency of MESI cache in CPU -- why does CPU need cache
Variable cannot have type 'void'
Model fusion -- stacking principle and Implementation
165 webmaster online toolbox website source code / hare online tool system v2.2.7 Chinese version
AutoCAD - set color
同构图与异构图CYPHER-TASK设计与TASK锁机制
Rearrange array
Software Engineer vs Hardware Engineer
Will the memory of ParticleSystem be affected by maxparticles
Book of night sky 53 "stone soup" of Apache open source community
Unity prefab day04