Java 编程语言有一个计时方法
2012-12-24 20:33
148 查看
Java 编程语言有一个计时方法,从早期版本起它就是标准 API 的一部分。 这个方法是
java.lang.System.currentTimeMillis(),它返回从 UTC 1970 年 1 月 1
日午夜开始经过的毫秒数。这个方法非常有用,特别 是它在各个版本的 Java 平台上都有。因此,在 上个月
我的初始方面演示代码中,我使用了它。不过,currentTimeMillis() 也有 一些缺点。
currentTimeMillis()
的一个问题是,它虽然是以毫秒计数返回时间,但是不能保证返回的计数的粒度或精度。在一些系统上,时间是真正的毫
秒计数,大约每一毫秒改变一次。在另一些系统上,时间可能每隔 10 或 20 毫秒才变一
次,因此每一次的精度都可能变化。
另一个局限是在方法定义中的基本时间单位。当 Java
平台第一次开始使用时,一毫秒仍然是相当短的时间间隔(特别是对于解释语言)。今天,随着 CPU 时钟速度比第一次发布 Java
平台时快了近一百倍,一毫秒已经成了相对长的一段时间。
除了 currentTimeMillis() 的这些问题,
还有另一个使用任何类型的计时器方法监视程序执行都会有的问题。这个问题是计时器方法本身 —— 可能要深入操作系统才能访问计时器 ——
这增加了一些开销,如果计时器方法开销过大(或者方法调用过于频繁),那么就会严重扭曲计时测量。为了明智地使用我们的性能跟踪方面,我需要至少大体知道计时器方法调用增加
了多少开销。
java.lang.System.currentTimeMillis(),它返回从 UTC 1970 年 1 月 1
日午夜开始经过的毫秒数。这个方法非常有用,特别 是它在各个版本的 Java 平台上都有。因此,在 上个月
我的初始方面演示代码中,我使用了它。不过,currentTimeMillis() 也有 一些缺点。
currentTimeMillis()
的一个问题是,它虽然是以毫秒计数返回时间,但是不能保证返回的计数的粒度或精度。在一些系统上,时间是真正的毫
秒计数,大约每一毫秒改变一次。在另一些系统上,时间可能每隔 10 或 20 毫秒才变一
次,因此每一次的精度都可能变化。
另一个局限是在方法定义中的基本时间单位。当 Java
平台第一次开始使用时,一毫秒仍然是相当短的时间间隔(特别是对于解释语言)。今天,随着 CPU 时钟速度比第一次发布 Java
平台时快了近一百倍,一毫秒已经成了相对长的一段时间。
除了 currentTimeMillis() 的这些问题,
还有另一个使用任何类型的计时器方法监视程序执行都会有的问题。这个问题是计时器方法本身 —— 可能要深入操作系统才能访问计时器 ——
这增加了一些开销,如果计时器方法开销过大(或者方法调用过于频繁),那么就会严重扭曲计时测量。为了明智地使用我们的性能跟踪方面,我需要至少大体知道计时器方法调用增加
了多少开销。
相关文章推荐
- Java的equal方法和==的一个坑
- 如果java中一个方法不知道要传递多少参数也不知道传递过来的是什么类型的数据你会怎么做?
- java 和 JavaScript都可以在创建一个对象时,就可以通过这个对象调用相应方法
- 创建并运行一个java线程方法介绍
- 在eclpse中 一个web project 引用多个 java project 的方法
- java中如何引用一个类的public方法
- 【Java】两个排序后的数组A和B,其中A的末端有足够的缓冲容纳B。编写一个方法,将B合并入A并排序。
- 分享一个 Java String split 快速分割的方法
- 【Java】有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串的位置
- Java实现点击一个控件实现删除一个控件的方法
- JAVA在定义一个方法的时候,不用public和用public有什么区别?
- 一个工具类WebUtil.java(包含设置cookie,得到cookie的方法,去除字符串当中的html标签的方法等等)
- Java题目一:写一个方法要求输入一个整型数组,将数组中的0去掉后返回一个新数组。
- java中的matches()方法怎么用?在哪一个包中?
- JAVA 判断一个整数是否为2的整数次幂的方法
- java调用linux top命令的方法,以及遇到的一个问题
- Java中编写一个完美的equals方法
- 在java中重复一个字符串n次的几种方法
- java中main方法启动的是一个进程还是一个线程
- java利用反射来调用一个类的私有方法