- 浏览: 563926 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (411)
- webservice (3)
- oracle (37)
- sqlserver (8)
- j2ee (56)
- linux (7)
- javaweb (47)
- office (1)
- struts (23)
- hibernate (11)
- spring (29)
- 网络 (2)
- tomcat (13)
- tongweb (0)
- weblogic (0)
- powerdesiginer (3)
- svn (3)
- js (20)
- ie (2)
- 编译 (3)
- css (2)
- 操作系统 (5)
- Android (41)
- jbpm4.3 (1)
- fckeditor (3)
- 操作excel (2)
- db2常用命令 (1)
- ibatis (5)
- mysql (16)
- 表达式语言 (1)
- java方式调用存储过程 (1)
- ca (1)
- linux客户端 (1)
- 电子数码 (1)
- 行业应用 (12)
- 开发工具 (4)
- 面试 (1)
- 计算机原理 (1)
- NOSQL (5)
- 虚拟机 (1)
- nginx (0)
- velocity (2)
- jndi (1)
- spring mvc (39)
- springmvc (32)
- 安全 (5)
- htmleditor (6)
- iphone4 (1)
- html (4)
- jstl (2)
- ckeditor (5)
- 连接池 (1)
- jquery (6)
- 分页 (1)
- 技术研发规则 (1)
- javamail (1)
- maven (2)
- upload (1)
- log (1)
- 测试 (10)
- spring roo (1)
- 版本控制 (2)
- find bugs (0)
- jsf (0)
- springroo (0)
- 小道理 (1)
- 小道理,技术标准 (1)
- jsf (0)
- bitbao (2)
- redmine (3)
- 团队意识 (1)
- mybatis (2)
- jquery mobile (1)
- flexpaper (0)
- json (4)
- URLRewriteFilte (1)
- html5 (1)
- 都乐保活动 (0)
- openfire (0)
- TreeMap (1)
- build (0)
- javaweb,tag (0)
- algorithm (1)
- tag (2)
- 扯淡 (0)
- mac (2)
- 叶一火(老一) (1)
- 游玩 (1)
- 编码 (1)
- 上线部署 (0)
- 研发管理 (0)
- thumbnailator (2)
- 旅游 (0)
- bingweibo (1)
- 杂谈 (4)
- ktv (1)
- weibo (1)
- 爱情 (2)
- 饮食 (1)
- MediaWiki (1)
- git (1)
- 版本库 (1)
- servlet (1)
- 感悟 (1)
- 人生 (1)
- highcharts (1)
- poi (0)
- websphere (0)
- php (1)
最新评论
-
woshixushigang:
good
org.springframework.beans.TypeMismatchException: Failed to convert property valu -
nathanleewei:
org.springframework.jdbc.core.B ...
org.springframework.beans.TypeMismatchException: Failed to convert property valu -
浪禾木:
请问是ckeditor\contents.css吗?改过以后 ...
ckeditor自动换行问题 -
simusuishi:
刚哥威武!
ckeditor取值赋值问题 -
a455642158:
收割完毕……
Android开源项目源码下载(不断更新中)
Java5+
摩尔定律是一种众所周知的现象,即计算机中的晶体管数量和它的处理速度随时间呈指数规律增长。作为仙童半导体公司(Fairchild Semiconductor)的研发领导人,戈登•摩尔于1965年提出了这一伟大发现。迄今为止,它仍有效。
与Java首次出现的时候相比,当前计算机的速度要快得多,对于很多应用程序而言以毫秒计时已不再能够满足要求。你可能使用过java.lang.System类,利用currentTimeMillis方法来获得一个方法调用或一段代码的定时信息。此方法可以用来度量执行某操作所花费的时间。但是,在运算速度更快的计算机上操作花费的时间可能远小于1毫秒,于是可以在一个for循环中执行此操作上百次或上千次,然后除以循环次数来计算此操作的单位时间。考虑下面的示例:
long startTime = System.currentTimeMillis(); for (int i=0; i<1000; i++) { performOperation(); // something we want to measure } long endTime = System.currentTimeMillis(); long totalTimeInMillis = endTime - startTime; // because the count was 1000, it's easy to get the unit time long unitTimeInMicros = totalTimeInMillis; |
这种一种很简单的运算,因为使用了for循环1000次。但是如果要度量亚微秒该如何实现呢?
for(int i=0; i<1000000; i++) { performOperation(); } |
如果从人类的角度来看,可怜的for循环将不得不不厌其烦地百万次的频繁循环!此外,只有在重复执行操作没有副作用的情况下使用for循环来计算时间才是有用的。如果操作是调用java.util.Collections.sort方法,那么将很难计算出排序过程花费的时间。在Java 5中,System类有一个新的nanoTime方法,它能返回一个纳秒精度的计数器。尽管不能将它用于度量绝对时间,但是它能够很好地度量时间差别。
List myList = initializeList(); // initialize the List somehow long startTime = System.nanoTime(); Collections.sort(myList); // measuring the sort time long endTime = System.nanoTime(); long differenceInNanoseconds = endTime - startTime; |
遗憾的是,运行上面的代码时无法保证实际上获得的是纳秒级的度量。但是使用更快的机器和良好的JRE实现,对于测试目的而言它是一种有用的度量方法。可以在JDK 5文档中找到更多有关此方法的信息。鉴于操作系统特性、机器处理速度和系统负载的不同,得到的由nanoTime方法返回的值可能会有很大的变化。随着时间的推移此问题应该会有所改善,摩尔定律基本上能保证这一点。
参考资料:
想要了解摩尔的原始论文,请参看Gordon E. Moore, Cramming More Components onto Integrated Circuits, Electronics, Vol. 38, No. 8 (April 19, 1965)。此外,还可以在网上获得该论文,参看本书的网站http:// wickedcooljava.com以获得URL。
发表评论
-
日期比较
2013-06-13 16:21 1139比较日期: function compareDate( ... -
Arrays.asList详解
2012-09-10 09:52 862Arrays.asList详解 记得以前写过一 ... -
Collections.addAll
2012-09-07 18:04 2289collections用法以及list 简单实例 Colle ... -
string
2012-09-06 17:20 857String a = "ab"; ... -
图片复制
2012-07-05 11:53 1043import java.io.File;import java ... -
thumbnailator 图片缩放
2012-07-04 20:10 1324Thumbnailator是一个用来生成图像缩略图的 J ... -
java File
2012-06-29 13:53 1234直接下载的,整理的很好,这里做个记录,基础的东西都是。 Fi ... -
mysql 时间比较
2012-06-05 19:57 1弱智得问题,分开写 SELECT * FROM bb_ ... -
split
2012-05-23 10:46 1163//String[] idArr = StringUtil ... -
(转)关于Integer大小比较的问题
2012-05-18 10:32 848关于Integer大小比较的问题 昨天跟朋友一起 ... -
toString
2012-05-14 20:01 970public abstract class ToStringB ... -
io读取操作
2012-03-09 16:18 917public void writeFile(Strin ... -
string[] to map
2012-03-03 17:23 1051public static Map<Inte ... -
tomcat中文问题的解决
2012-03-01 09:55 826第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特 ... -
java方式将汉字转成拼音
2012-02-24 13:02 1033/** * 需要一个开源的jar包pinyin4j-2.5. ... -
System.getProperty(key)
2012-02-15 15:08 990public static void main(String ... -
CodeFilter
2012-05-22 11:14 808package com.bitbao.cm.common.ut ... -
Integer值比较误区
2012-05-22 11:14 898例子: Integer i1 = 12; I ... -
手机与web验证信息的token
2012-01-29 10:32 993{"uid":8,"token& ... -
容易忽略的for循环问题
2012-01-18 15:33 11481、项目中对用户操作的结果进行审核时候,出现一个问题,如果对省 ...
相关推荐
System.nanoTime() System.currentTimeMillis() SystemClock.uptimeMillis() SystemClock.elapsedRealtime() SystemClock.currentThreadTimeMillis 0、时间的单位: 秒:second 毫秒:Millisecond 微妙:Microsecond...
测试代码 测试代码。 简单密码 吸血鬼号码 频率分析仪和System.nanoTime(); PCG 谨防! 这些只是beta版之前的一部分; )
while ((System.nanoTime() - nano) ) { if (jedis.setnx(key, LOCKED) == 1) { jedis.expire(key, EXPIRE); locked = true; return locked; } // 短暂休眠,nano避免出现活锁 Thread.sleep(3, r.nextInt...
//让线程休眠,由 sleepTime 值决定 } catch (InterruptedException ex) { } t1 = System.nanoTime(); //重新获取当前系统时间 } } 3. 在游戏逻辑更新部分实现小球的运动逻辑,使得小球可以朝着窗口四周 移动,并在...
2、解决System.nanoTime();并不代表实际时间纳秒的问题。 3、解决解决System.nanoTime();不同JVM获取值不一致的问题。 4、解决解决System.nanoTime();值无法与毫秒时间换算问题。 5、可与GO的纳秒时间兼容。
纳米时间返回当前纳米时间。 用于制作 id。执照国际学习中心
requestLatency.record(System.nanoTime() - s, TimeUnit.NANOSECONDS); } } public int getNumConnections() { // however we determine the current number of connections on the ...
对于一个m位整数,我们... long startTime = System.nanoTime(); int iTest; String fileName = "COUNT0.IN"; iTest = ReadFromFile.readFileByChars(fileName); Arith r = new Arith (); r.Arith(iTest); } }
CS146_DataShuffling A部分–数据混排建议的解决方案: 我通过读取给定文件并... 时间变量设置为System.nanoTime()。 这是执行任何方法之前系统的初始时间。 需要考虑的案例: 如果找不到文件ErdosCA.txt和ShaoAnniS
jvm-micro基准 JVM代码的微基准。 一些基准测试使用JMH进行延迟测试。 协同遗漏 一些基准是手写的,以补偿协调的遗漏。 协调遗漏会严重降低...long next = System . nanoTime(); int interval = ( int ) ( 1e9 / rat
我们通过使用Java的System.nanoTime()函数来做到这一点,即在调用算法之前就启动时钟,并在返回算法后立即停止时钟。 之后,我们将时间转换为毫秒以进行分析,在此我们计算每种输入大小下每种算法在10
超简单微基准有关如何对代码进行基准测试的简单演示System.nanoTime等的幼稚方法JMH的最佳方法。
计时器 一个实用程序类,它基于通过调用System.nanoTime()提供的纳秒级时间戳提供一个简单的计时器。 计时器提供以下操作: 重置 开始 分裂 暂停 恢复 停止 计时器状态为: 统一 跑步 已暂停 已停止
缓存策略入门例子1 @CacheStrategy ( cacheName = " cachename2 " )public Map< String> getUserUids( String entityId, @CacheKey List< String> userIds) { ... identity(), userId - > System . nanoTime()));}
方法论_练习 编程方法和算法应用练习 实用程序:我们正在研究的算法的最重要的课程 斐波那契:迭代和递归 ... 并使用 System 类的 currentTimeMillis 和/或 nanoTime 方法,它们提供分别以毫秒和纳秒为单位的系统时间。