Java Date Time 教程-时间测量

在Java中,用System.currentTimeMillis()来测量时间最方便。
你要做的是在某些操作之前获取到时间,然后在这些操作之后你想要测量时间,算出时间差。下面是一个例子:

1 long startTime = System.currentTimeMillis();
2 callOperationToTime();
3 long endTime   = System.currentTimeMillis();
4 long totalTime = endTime - startTime;

现在变量totalTime将包含执行callOperationToTime()方法所需要的全部时间。

反复操作

由于System.currentTimeMillis()没有返回精准的时间,所以不止一次地去执行测量操作是个不错的主意。也许10次、100次或者1000次,甚至更多。这样由于大粒度时间值(该值并不是每毫秒都在变化着)而导致的非精准时间将趋于平稳。(原文:That way inaccuracy caused by large grained time values (values that does not change every millisecond) is leveled out.)
反复执行很多次测量操作的另一个很好的理由是,允许Java虚拟机去装载那些测量操作代码的classes,即时编译它,或许还能对它进行优化。(译者注JVM中的JIT会将字节代码中经常使用到的片段编译为机器码,带来性能提升。有关JIT有篇不错的文章介绍,地址在这

Timer类

前文所列出的计算方法是相当繁琐的并且沉闷,我们可以将它封装到一个Timer类中,下面是大概的例子:

01 public class Timer {
02  
03   private long startTime = 0;
04   private long endTime   = 0;
05  
06   public void start(){
07     this.startTime = System.currentTimeMillis();
08   }
09  
10   public void end() {
11     this.endTime   = System.currentTimeMillis(); 
12   }
13  
14   public long getStartTime() {
15     return this.startTime;
16   }
17  
18   public long getEndTime() {
19     return this.endTime;
20   }
21  
22   public long getTotalTime() {
23     return this.endTime - this.startTime;
24   }
25 }

下面是个如何使用Timer类的例子:

1 Timer timer = new Timer();
2 timer.start();
3 callOperationToTime();
4 timer.end();
5 long totalTime = timer.getTotalTime();

(全文完)

时间: 2024-09-01 14:48:20

Java Date Time 教程-时间测量的相关文章

Java Date Time 教程

原文链接 作者:Jakob Jenkov  译者:魏嘉鹏 目录 Java 8 Date Time API Java 7 Date Time API 当你初次尝试弄明白怎么去使用Java的date time 的API的时候,那是相当令人困惑的.Therefore I have put together this little trail on Java's date and time classes.希望这会让你对Java'的date类和time类有个总体的认识.我也希望这能消除一些Sun所制造的

Java Date Time 教程-java.util.Calendar和GregorianCalendar

目录 实例化GregorianCalendar 获取年.月.日等 增加和减少年.月.日等 陷阱和误区 月份的陷阱 星期几的误区 JavaDoc中的更多细节 Java的java.util.Calendar用于日期和时间的运算.无论任何时候,只要你有一些轻微操作(除了仅仅表示日期和时间)需要执行,那么就使用这个类.(原文:Whenever you have something slightly more advanced than just representing a date and time,

Java Date Time 教程-java.util.Date

原文链接 作者:Jakob Jenkov  译者:魏嘉鹏 Java的java.util.Date类是Java最初的时间类之一.今天该类的大部分方法已不推荐使用,取而代之的是java.util.Calendar类.不过你仍然可以使用java.util.Date类去表示某个时间.下面是一个如何实例化java.util.Date的例子: java.util.Date date = new java.util.Date(); Date实例包含了当前时间作为它的日期和时间.你可以通过getTime()方法

Java Date Time 教程-System.currentTimeMillis()

原文链接 作者:Jakob Jenkov  译者:魏嘉鹏 静态方法System.currentTimeMillis() 返回从1970年1月1日到现在的总毫秒数.返回类型为long.下面是一个例子: long timeNow = System.currentTimeMillis(); 实际上要做的就只有这么多了.返回long类型的值可以用于初始化java.util.Date,java.sql.Date.java.sql.Timestamp和java.util.GregorianCalendar对

Java Date Time 教程-java.sql.Date

Java的java.sql.Date类在JDBC API中被使用.如果你需要在java.sql.PreparedStatement上设置日期或者从java.sql.ResultSet获取日期,你将会和java.sql.Date打交道. 实际上,java.sql.Date继承于java.util.Date,所以你可以用java.util.Date做的任何事同样适用于java.sql.Date.查阅 java.util.Date 了解更多的信息.下面是一个如何实例化java.sql.Date的例子:

Java Date Time 教程-java.sql.Timestamp

Java的java.sql.Timestamp类在JDBC API中被使用.如果你需要在java.sql.PreparedStatement上设置日期+时间或者从java.sql.ResultSet获取日期+时间,你将会和java.sql.Timestamp打交道. 实际上,java.sql.Timestamp继承于java.util.Date,所以你可以用java.util.Date做的任何事同样适用于java.sql.Timestamp.查阅 java.util.Date 了解更多的信息.j

Java 8简明教程

原文地址 本文由 ImportNew - 黄小非 翻译自 winterbe.欢迎加入翻译小组.转载请见文末要求. ImportNew注:有兴趣第一时间学习Java 8的Java开发者,欢迎围观<征集参与Java 8原创系列文章作者>. 以下是<Java 8简明教程>的正文. "Java并没有没落,人们很快就会发现这一点" 欢迎阅读我编写的Java 8介绍.本教程将带领你一步一步地认识这门语言的新特性.通过简单明了的代码示例,你将会学习到如何使用默认接口方法,La

Java 8新的时间日期库的20个使用示例

除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API. Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的.看来Java已经意识到需要为时间及日期功能提供更好的支持了,这对已经习惯使用Joda时间日期库的社区而言也是件好事.关于这个新的时间日期库的最大的优

Java 8新的时间日期库的20个使用示例_java

原文:http://it.deepinmind.com/java/2015/03/17/20-examples-of-date-and-time-api-from-Java8.html 除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDa