目前获取毫秒值大概有下面三种方法

  1. //方法 一
  2. System.currentTimeMillis();
  3. //方法 二
  4. Calendar.getInstance().getTimeInMillis();
  5. //方法 三
  6. new Date().getTime();

最近做监控系统,发现代码中有前两种方法,然后突然有了一个想法,到底哪个更快呢?

然后做了如下实验:

  1. import java.util.Calendar;
  2. import java.util.Date;
  3. public class TimeTest {
  4. private static long _TEN_THOUSAND=10000;
  5. public static void main(String[] args) {
  6. long times=1000*_TEN_THOUSAND;
  7. long t1=System.currentTimeMillis();
  8. testSystem(times);
  9. long t2=System.currentTimeMillis();
  10. System.out.println(t2-t1);
  11. testCalander(times);
  12. long t3=System.currentTimeMillis();
  13. System.out.println(t3-t2);
  14. testDate(times);
  15. long t4=System.currentTimeMillis();
  16. System.out.println(t4-t3);
  17. }
  18. public static void testSystem(long times){//use 188
  19. for(int i=0;i<times;i++){
  20. long currentTime=System.currentTimeMillis();
  21. }
  22. }
  23. public static void testCalander(long times){//use 6299
  24. for(int i=0;i<times;i++){
  25. long currentTime=Calendar.getInstance().getTimeInMillis();
  26. }
  27. }
  28. public static void testDate(long times){
  29. for(int i=0;i<times;i++){
  30. long currentTime=new Date().getTime();
  31. }
  32. }
  33. }

因为很简单我就不加注释了,每种方法都运行1千万次,然后查看运行结果

  1. 187
  2. 7032
  3. 297

结果发现 System.currentTimeMillis() 这种方式速度最快

Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,看看源码会发现,Canlendar因为要处理时区问题会耗费很多的时间。

所以建议多使用第一种方式。

另,System 类中有很多高效的方法,比如,arrayCopy 之类的

http://tangmingjie2009.iteye.com/blog/1543166

JAVA获取时间戳,哪个更快的更多相关文章

  1. java 获取时间戳的三种方式

      java 获取时间戳的三种方式 CreationTime--2018年7月13日16点29分 Author:Marydon 1.实现方式 方式一:推荐使用 System.currentTimeMi ...

  2. java 获取时间戳

    //java 获取时间戳 long currentTime=System.currentTimeMillis();

  3. java获取时间戳的方法

    JAVA 获取当前月的初始时间的时间戳 public static long getMonthFirstDay() { Calendar calendar = Calendar.getInstance ...

  4. java获取时间戳

    package com.ycy.test; import java.text.SimpleDateFormat; import java.util.Date; public class ItemsCo ...

  5. 让JAVA代码跑得更快

    本文简单介绍一下在写代码过程中用到的一些让JAVA代码更高效的技巧. 1.   将一些系统资源放在池中(如数据库连接, 线程等) 在standalone的应用中, 数据库连接池可以使用一些开源的连接池 ...

  6. 比反射更快!使用ASM获取class信息(ClassReader)

    比反射更快!使用ASM获取class信息(ClassReader) 通常我们想要在java运行时获取class的信息时,通常使用反射的方式来获取其中的属性,方法,注解等信息.通常是这样的: Class ...

  7. 【Java并发工具类】StampedLock:比读写锁更快的锁

    前言 ReadWriteLock适用于读多写少的场景,允许多个线程同时读取共享变量.但在读多写少的场景中,还有更快的技术方案.在Java 1.8中, 提供了StampedLock锁,它的性能就比读写锁 ...

  8. 对于Java中的Loop或For-each,哪个更快

    Which is Faster For Loop or For-each in Java 对于Java中的Loop或Foreach,哪个更快 通过本文,您可以了解一些集合遍历技巧. Java遍历集合有 ...

  9. java获取当前时间戳的方法

    获取当前时间戳 //方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); //方法 三 n ...

随机推荐

  1. 程序员是怎么炼成的---OC题集--练习答案与题目(2)

    1.objective-c中有垃圾回收机制吗?  没有像java.C#一样的垃圾回收机制,但是有ARC自动引用计数器技术,根据对象的引用技术来判断对象是否还在使用,如果RC=0,则系统就会销毁对象,实 ...

  2. Java课程作业1

    模仿JavaAppArguments.java实例,编写一个程序,此程序从命令行接受多个数字,求和之后输出. 设计思想:命令行参数都是字符串,必须将其转化成数字才能相加,定义一个数组接收字符串转化的数 ...

  3. 直接用bat命令对Inno Setup的脚本文件.iss进行编译

    直接用bat命令对Inno Setup的脚本文件.iss进行编译 2010-06-17 15:17 qjn0059 | 浏览 2163 次 编程语言外语学习 分享到:   2010-06-29 11: ...

  4. tracking 问题解决

    1.dir,或者C++函数读文件名,不推荐.搞乱了名字 2. matio读写矩阵

  5. ld链接问题解决

    http://stackoverflow.com/questions/480764/linux-error-while-loading-shared-libraries-cannot-open-sha ...

  6. 重装系统后删除Cygwin文件夹

    1.右键点要删除Cygwin 文件夹,依次选属性-安全-高级-所有者-编辑,将所有者改为你的登录帐户,勾选下方“替换子容器和对象的所有者”. 2.在 属性-安全-高级对话框中选 权限选项卡,点更改权限 ...

  7. 多层CCLayer的touch冲突解决

    一般通过layer. setTouchPriority()方法来设置 touch优先级,数值越小,优先级越高,但有时多人开发过程中,多层layer叠在一起,无法通过setTouchPrority()来 ...

  8. OVS ARP Responder – Theory and Practice

    Prefix In the GRE tunnels post I’ve explained how overlay networks are used for connectivity and ten ...

  9. python 的一些小技巧

    赋值: a, b, c = 'xixi', 'haha', 'hehe' 连接字典: >>> s = {1:'a', 2:'b', 3:'c'} >>> s.key ...

  10. hexo git配置问题笔记

    本地安装hexo步骤 注意:本节教程只针对Windows用户,Linux和Mac用户请移步hexo安装. 安装Git 下载 msysgit 并执行即可完成安装. 安装Node.js 在 Windows ...