首页 > 代码库 > 1ms的时间内java能干什么?
1ms的时间内java能干什么?
有没有人想过1ms里面java能做什么?很多人说计算机很快快到无法想象1ms的时间内java能做很多时间,有的人说java很慢1ms里面做不了太多事情。今天我用实验来告诉大家究竟1ms里面java能做什么,java究竟有多快(或者有多慢)
实验背景
CPU: i5-4200U
内存: 8G
Eclipse
实验一
让java重复100次打印当前的毫秒数,够简单吧,没有任何的逻辑操作,大家觉得java有多快?
public class A { public static void main(String[] args) { for (int i = 0; i < 100; i++) { System.out.println(System.currentTimeMillis()); } } }实验输出结果:
1406079200638 1406079200638 1406079200638 …… 1406079200638 1406079200639 1406079200639 1406079200639 1406079200639 …… 1406079200639 1406079200639 1406079200639 1406079200639 1406079200640 …… 1406079200640 1406079200640
我的机器连在1ms里面循环100次打印都做不到。
实验二
用一个Map保存当前每一个毫秒的计数结果,每次循环从这个map中用当前的毫秒数为key获取value,value是一个int型,然后把这个int型自增1之后打印出来,再保存回去计数器
/** * 计数器 * @author alexy * */ public class B { private HashMap<Long, Integer> counter = new HashMap<Long, Integer>(); public HashMap<Long, Integer> getCounter() { return counter; } public void setCounter(HashMap<Long, Integer> counter) { this.counter = counter; } }
打印逻辑
public class A { public static void main(String[] args) { B b = new B(); for (int i = 0; i < 100; i++) { long time = System.currentTimeMillis(); Integer count = b.getCounter().get(time); if(count == null){ count = new Integer(1); System.out.println(time + " : " + count); b.getCounter().put(time, count); }else{ int newCount = count.intValue() + 1; System.out.println(time + " : " + newCount); b.getCounter().put(time, newCount); } } } }
输出结果:
1406080147962 : 1 1406080147962 : 2 1406080147963 : 1 1406080147963 : 2 1406080147963 : 3 1406080147963 : 4 1406080147963 : 5 1406080147963 : 6 1406080147963 : 7 1406080147963 : 8 1406080147963 : 9 1406080147963 : 10 1406080147963 : 11 1406080147963 : 12 1406080147963 : 13 1406080147964 : 1 1406080147964 : 2 1406080147964 : 3 1406080147964 : 4 1406080147964 : 5 1406080147964 : 6 1406080147964 : 7 1406080147964 : 8 1406080147964 : 9 1406080147964 : 10 1406080147964 : 11 1406080147964 : 12 1406080147964 : 13 1406080147964 : 14 1406080147964 : 15 1406080147964 : 16 1406080147964 : 17 1406080147964 : 18 1406080147964 : 19 1406080147964 : 20 1406080147964 : 21 1406080147964 : 22 1406080147964 : 23 1406080147964 : 24 1406080147964 : 25 1406080147964 : 26 1406080147964 : 27 1406080147964 : 28 1406080147964 : 29 1406080147964 : 30 1406080147964 : 31 1406080147964 : 32 1406080147964 : 33 1406080147964 : 34 1406080147964 : 35 1406080147964 : 36 1406080147965 : 1 1406080147965 : 2 1406080147965 : 3 1406080147965 : 4 1406080147965 : 5 1406080147965 : 6 1406080147965 : 7 1406080147965 : 8 1406080147965 : 9 1406080147965 : 10 1406080147965 : 11 1406080147965 : 12 1406080147965 : 13 1406080147965 : 14 1406080147965 : 15 1406080147965 : 16 1406080147965 : 17 1406080147965 : 18 1406080147965 : 19 1406080147965 : 20 1406080147965 : 21 1406080147965 : 22 1406080147965 : 23 1406080147965 : 24 1406080147965 : 25 1406080147965 : 26 1406080147965 : 27 1406080147965 : 28 1406080147965 : 29 1406080147965 : 30 1406080147965 : 31 1406080147966 : 1 1406080147966 : 2 1406080147966 : 3 1406080147966 : 4 1406080147966 : 5 1406080147966 : 6 1406080147966 : 7 1406080147966 : 8 1406080147966 : 9 1406080147966 : 10 1406080147966 : 11 1406080147966 : 12 1406080147966 : 13 1406080147966 : 14 1406080147966 : 15 1406080147966 : 16 1406080147966 : 17 1406080147966 : 18
java打印的情况并不平均,最多的情况下能打36次,最少的情况打印13次,最开始的那段是不完整的1ms所以不算
数据抖动范围
其实这个实验不能给出最准确的结果,因为服务器的配置肯定比我的电脑强,但是服务器有时候的负载比较大,我的电脑在测试的时候又没有运行任何别的程序,这点上我的电脑又可以加分。所以这个结果只是给大家一个感性的认知,并不作为最准确的试验结果,欢迎大家发布在服务器上的试验结果。
怎么样?现在觉得java比你想象中的快还是慢?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。