JAVA获取时间戳,哪个更快
目前获取毫秒值大概有下面三种方法
- //方法 一
- System.currentTimeMillis();
- //方法 二
- Calendar.getInstance().getTimeInMillis();
- //方法 三
- new Date().getTime();
最近做监控系统,发现代码中有前两种方法,然后突然有了一个想法,到底哪个更快呢?
然后做了如下实验:
- import java.util.Calendar;
- import java.util.Date;
- public class TimeTest {
- private static long _TEN_THOUSAND=10000;
- public static void main(String[] args) {
- long times=1000*_TEN_THOUSAND;
- long t1=System.currentTimeMillis();
- testSystem(times);
- long t2=System.currentTimeMillis();
- System.out.println(t2-t1);
- testCalander(times);
- long t3=System.currentTimeMillis();
- System.out.println(t3-t2);
- testDate(times);
- long t4=System.currentTimeMillis();
- System.out.println(t4-t3);
- }
- public static void testSystem(long times){//use 188
- for(int i=0;i<times;i++){
- long currentTime=System.currentTimeMillis();
- }
- }
- public static void testCalander(long times){//use 6299
- for(int i=0;i<times;i++){
- long currentTime=Calendar.getInstance().getTimeInMillis();
- }
- }
- public static void testDate(long times){
- for(int i=0;i<times;i++){
- long currentTime=new Date().getTime();
- }
- }
- }
因为很简单我就不加注释了,每种方法都运行1千万次,然后查看运行结果
- 187
- 7032
- 297
结果发现 System.currentTimeMillis() 这种方式速度最快
Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,看看源码会发现,Canlendar因为要处理时区问题会耗费很多的时间。
所以建议多使用第一种方式。
另,System 类中有很多高效的方法,比如,arrayCopy 之类的
http://tangmingjie2009.iteye.com/blog/1543166
JAVA获取时间戳,哪个更快的更多相关文章
- java 获取时间戳的三种方式
java 获取时间戳的三种方式 CreationTime--2018年7月13日16点29分 Author:Marydon 1.实现方式 方式一:推荐使用 System.currentTimeMi ...
- java 获取时间戳
//java 获取时间戳 long currentTime=System.currentTimeMillis();
- java获取时间戳的方法
JAVA 获取当前月的初始时间的时间戳 public static long getMonthFirstDay() { Calendar calendar = Calendar.getInstance ...
- java获取时间戳
package com.ycy.test; import java.text.SimpleDateFormat; import java.util.Date; public class ItemsCo ...
- 让JAVA代码跑得更快
本文简单介绍一下在写代码过程中用到的一些让JAVA代码更高效的技巧. 1. 将一些系统资源放在池中(如数据库连接, 线程等) 在standalone的应用中, 数据库连接池可以使用一些开源的连接池 ...
- 比反射更快!使用ASM获取class信息(ClassReader)
比反射更快!使用ASM获取class信息(ClassReader) 通常我们想要在java运行时获取class的信息时,通常使用反射的方式来获取其中的属性,方法,注解等信息.通常是这样的: Class ...
- 【Java并发工具类】StampedLock:比读写锁更快的锁
前言 ReadWriteLock适用于读多写少的场景,允许多个线程同时读取共享变量.但在读多写少的场景中,还有更快的技术方案.在Java 1.8中, 提供了StampedLock锁,它的性能就比读写锁 ...
- 对于Java中的Loop或For-each,哪个更快
Which is Faster For Loop or For-each in Java 对于Java中的Loop或Foreach,哪个更快 通过本文,您可以了解一些集合遍历技巧. Java遍历集合有 ...
- java获取当前时间戳的方法
获取当前时间戳 //方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); //方法 三 n ...
随机推荐
- UVA821 floyd最短路+暴力
题意:给n条边,求每两个点之间的平均距离: 思路:数据是100条边,用floyd得到每两点之间的最短距离,然后遍历相加除以边的数目: #include <iostream> #includ ...
- VBS_DO...Loop
循环用于重复执行一组语句.循环可分为三类:一类在条件变为 False 之前重复执行语句,一类在条件变为 True 之前重复执行语句,另一类按照指定的次数重复执行语句. 在 VBScript 中可使用下 ...
- Java 集合深入理解(12):古老的 Vector
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天刮台风,躲屋里看看 Vector ! 都说 Vector 是线程安全的 ArrayList,今天来根据源码看看是不是这 ...
- 简单的多线程(活用OD解决运行时错误)
代码源自<VC++深入详解>第15章 “多线程”,位于第563页 - 566 页. 程序的目的是展示多线程运行的效果: #include <windows.h> #includ ...
- WCF寻址
1.如果在<System.ServiceModel>.<Services>.<Service>.<host>.<baseaddress>定义 ...
- magento中的ajax
<script type="text/javascript"> function loadRecommend(){ $.ajax({ ...
- LeetCode Subsets II (DFS)
题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...
- JavaScript数据结构——栈和队列
栈:后进先出(LIFO)的有序集合 队列:先进先出(FIFO)的有序集合 --------------------------------------------------------------- ...
- OpenFlow Switch学习笔记(五)——Group Table、Meter Table及Counters
本文主要详述OpenFlow Switch的另外两个主要组件——Group Table和Meter Table,它们在整个OpenFlow Swtich Processing中也起到了重要作用. 1. ...
- 关于Ajax知识点小节
URL:统一资源定位符 网络的七层协议:网卡 驱动 网络层(ip) 传输层(tcp udp) 会话层( ) 应用层(http.) restful表征状态转移(一种表征架构) CURD 增删改查 ...