广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于Java 获取时间戳的方法
  • 810
分享到

关于Java 获取时间戳的方法

2024-04-02 19:04:59 810人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

Java有两个取时间戳的方法:System.currentTimeMillis() 和System.nanoTime(),它们的使用场景是有区别的,当前网上一些文章对于这两个方法的性

Java有两个取时间戳的方法:System.currentTimeMillis()System.nanoTime(),它们的使用场景是有区别的,当前网上一些文章对于这两个方法的性能讨论存在一些片面的描述,本文希望能给出一个简单的最终答案。

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

答案是否定的。

这两个方法性能差异取决于操作系统

Windows:

windows 下,System.currentTimeMillis() System.nanoTime() 要快很多,这是因为 Windows 系统为前者提供的只是一个缓存变量,而后者则是实时的去硬件底层获取计数。

  • 参考

所以如果你的生产环境是 Windows,请尽可能避免使用 System.nanoTime()。

Linux:

linux 下,两者的执行耗时相差不大,不论是单线程还是多线程

不同的虚拟机实现会带来性能差异

如今的云主机主要有 Xen 和 KVM 两种实现方式,网上有文章发现它们在取系统时间方面存在性能差异。

当我们的虚拟机用的是 Xen 时,取时间的耗时会是 KVM 的十倍以上。不过上文也提供了遇到此类问题该如何解决的方案。

需要写一个专门的类来提升 System.currentTimeMillis() 性能吗?

不需要。那属于画蛇添足。

我的测试代码

我的测试代码如下,没有任何依赖,可以直接用 javac 编译然后运行。读者有兴趣可以试试。

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);
}
}

因为我用的是 Windows,所以执行输出当中System.nanoTime() 明显非常慢。具体输出内容我就不放出来了,因为不具有参考价值,大多数生产环境用的是 Linux。

到此这篇关于关于Java 获取时间戳的方法的文章就介绍到这了,更多相关Java 获取时间戳内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于Java 获取时间戳的方法

本文链接: https://www.lsjlt.com/news/146541.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Java 获取时间戳的方法
    Java有两个取时间戳的方法:System.currentTimeMillis() 和System.nanoTime(),它们的使用场景是有区别的,当前网上一些文章对于这两个方法的性...
    99+
    2022-11-13
  • C#获取时间戳的方法及时间戳转换问题
    目录一:日期转化成时间戳二:将当前日期的前后指定的天数转换成时间戳三:将指定日期转换成时间戳:如 2022-8-22 22:56:30四:将时间戳转换成日期因为一些原因,原本学Jav...
    99+
    2023-02-06
    C#获取时间戳 C#时间戳转换
  • 使用java获取时间戳的方法有哪些
    使用java获取时间戳的方法有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、java获取时间戳首先我们先拿上面的例子说起吧。如何获取今天零点以及明天零点的两个时间戳...
    99+
    2023-05-30
    java 时间戳
  • 学习Golang:获取时间戳的方法
    Golang教程:如何获取时间戳,需要具体代码示例时间戳(timestamp)是指某一时刻相对于某一固定的起始时间点所经过的秒数或毫秒数。在软件开发中,获取时间戳是一项常见的操作,可以用于记录事件发生的顺序、计算时间间隔等等。在Golang...
    99+
    2023-12-29
    Golang 时间戳 获取
  • java怎么获取时间戳
    在Java中,可以使用`System.currentTimeMillis()`方法获取当前的时间戳。这个方法返回的是自1970年1月...
    99+
    2023-08-31
    java
  • Python中获取时间戳的几种方法
    Python中获取时间戳的几种方法 时间戳是指从某个特定的时间点(通常是1970年1月1日00:00:00 UTC)到现在的总秒数。在Python中,我们可以使用多种方法获取时间戳。本文将介绍三种常用...
    99+
    2023-09-30
    python 服务器 开发语言
  • ubuntu获取时间戳的方法是什么
    本篇内容介绍了“ubuntu获取时间戳的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!打开终端命令行模式。直接执行“date”命令...
    99+
    2023-07-04
  • PHP获取特殊时间戳的方法整理
    目录问题描述解决方案今天时间戳与日期时间戳日期格式昨天时间戳与日期日期格式本周时间戳与日期时间戳日期格式本月时间戳和日期时间戳日期格式本季度时间戳和日期时间戳日期格式当前年时间戳和日...
    99+
    2023-01-10
    PHP获取特殊时间戳 PHP 特殊时间戳 PHP 时间戳
  • javascript获取时间戳的5种方法详解
    js/javascript获取时间戳的5种方法 1.获取时间戳精确到秒,13位 const timestamp = Date.parse(new Date()); console.l...
    99+
    2023-03-19
    js获取时间戳 js时间戳
  • PHP实现获取毫秒时间戳的方法
    PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数。 php的毫秒是没有默...
    99+
    2023-08-30
    php 开发语言
  • java怎么获取当前时间戳
    在Java中,可以使用`System.currentTimeMillis()`方法获取当前时间戳,返回的是从1970年1月1日00:...
    99+
    2023-10-24
    java
  • Python 获取今天任意时刻的时间戳的方法
    代码 # -*- coding: utf-8 -*- # Author    : markadc from datetime import datetime, timedelta ...
    99+
    2022-11-11
  • linux获取当前时间戳的方法有哪些
    1. 使用date命令:可以使用date命令获取当前时间的时间戳。具体命令为:date +%s2. 使用time命令:可以使用tim...
    99+
    2023-05-31
    linux获取当前时间 linux
  • php获取当前时间戳的方法是什么
    本篇内容主要讲解“php获取当前时间戳的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php获取当前时间戳的方法是什么”吧!php获取当前时间戳的方法:1、直接使用time()函数,语...
    99+
    2023-06-25
  • php获取当前时间戳的方法有哪些
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php获取当前时间戳的方法1、使用time()time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。语法...
    99+
    2018-06-19
    php 当前时间戳
  • linux获取当前时间戳的方法是什么
    在Linux系统中获取当前时间戳的方法有两种:1. 使用date命令获取当前时间戳可以使用date命令获取当前时间戳。在终端中输入以...
    99+
    2023-05-16
    linux获取当前时间 linux
  • golang时间及时间戳的获取转换
    目录一、获取时间1.1 获取当前时间1.2 获取之前/之后的时间获取1分钟之前的时间戳获取一小时之前的时间获取1小时后的时间二、获时间戳2.1 获取当前时间戳2.2 时间转时间戳2....
    99+
    2022-11-13
  • Python获取网络时间戳的两种方法详解
    目录方法一代码实现调用方法返回结果方法二代码实现调用方法返回结果在我们进行注册码的有效期验证时,通常使用获取网络时间的方式来进行比对。 以下为获取网络时间的几种方式。 方法一 需要的...
    99+
    2022-11-12
  • python整小时 整天时间戳获取算法
    根据当前时间戳获得整小时时间戳 unit = 3600 start_time = int(time.time())/3600 * 3600 根据当前时间戳获得整天时间戳 unit = 3600*24 start_time = int(ti...
    99+
    2023-01-31
    算法 小时 时间
  • 使用java怎么获取整点的时间戳
    本篇文章给大家分享的是有关使用java怎么获取整点的时间戳,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、We...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作