【Java】获取Java代码段运行毫秒数的策略
System.currentTimeMillis()
使用System.currentTimeMillis(),获取系统当前时间(按ms计量),类型为long。
在测试代码段开始前打上第一个时间戳,使用System.currentTimeMillis()获取当前时间;在结束部分再打一个时间戳,再次使用System.currentTimeMillis()获取当前时间。
end-start
即为所求的运行用时。
ms已经很精确了 (Java还有支持ns的API但其实系统未必支持) ,但即使使用ns进行百千万次的运算,也很可能测出耗时0ms,所以想测试就不要去测那种没什么时耗的例子,找点典型的耗时应用算法去做测试。
Test1
我们将简单算术加法进行100W次,结果竟然耗时0ms。
public class GetTimeTest {public static void main(String[] args) {long start = System.currentTimeMillis();long counter = 0;for (int i = 0; i < 1000000; i++) {counter += i;}long end = System.currentTimeMillis();System.out.println(end-start);}
}
测试结果
0
Test2
我们将一个字符串连接100W次(1M次),测一下时间。
哪怕我们只用了空串,然而字符串连接这种行为本身就很消耗时间了,所以必然有个结果。
public class GetTimeTest {public static void main(String[] args) {long start = System.currentTimeMillis();String str = "";for (int i = 0; i < 1000000; i++) {str += "";}long end = System.currentTimeMillis();System.out.println(end-start);}
}
测试结果
47
Test3
我们把Test2的连接次数再翻10倍,达到1000W次:
public class GetTimeTest {public static void main(String[] args) {long start = System.currentTimeMillis();String str = "";for (int i = 0; i < 10000000; i++) {str += "";}long end = System.currentTimeMillis();System.out.println(end-start);}
}
测试结果:
159
总结
打时间戳来测试区间代码段运行时间,可以便于自己开展粗略的性能测试,是很重要的知识,一定要掌握啊!
【Java】获取Java代码段运行毫秒数的策略相关推荐
- java中测代码段运行时间及内存的方法
1.测运行时间 long startTime = System.currentTimeMillis(); //获取开始时间 代码段- long endTime = System.currentTime ...
- 怎么运行java虚拟机_Java代码如何运行在Java虚拟机中
我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要 ...
- java——获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序
获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示,并不要再运行程序 import java.io.File; import java.io.FileInputStream; im ...
- java获取cpu核数_vn.py社区精选12 - 策略参数优化,你需要懂得压榨CPU!
作者:张国平 万恶的全局锁 基于物理上的限制,各CPU厂商在核心频率上的比赛已经被多核所取代.为了更有效的利用多核处理器的性能,多线程的编程方式被越来越多地应用到了各类程序中,而随之带来的则是线程间 ...
- JAVA 获取java版本号
JAVA 获取系统配置信息重点内容 System.out.println("java版本号:" + System.getProperty("java.version&qu ...
- java获取当前年月日(java获取当前年月日时分秒毫秒)
java如何获取当前时间 年月日 时分秒 //得到long类型当前时间 long l = System.currentTimeMillis(); //new日期对象 Date date = new D ...
- java获取pdf文件的总页数
1.在pom.xml加入依赖 <dependency> <groupId>org.apache.pdfbox</groupId> ...
- java获取cookie_JAVA代码模拟获取cookie以及携带cookie
JAVA代码模拟获取cookie以及携带cookie 去年做android的时候,网络连接没有用类似OKHttp之类的框架,而是完全用jdk自带的api实现,今天不想看书..就把笔记整理一下吧.. 这 ...
- JAVA获取当前进程的内存占用数和CPU利用率以及读写字节数并计算统计信息
通过oshi这个三方库来获取,目前这个最准确. 引入依赖 <dependency><groupId>com.github.oshi</groupId><art ...
最新文章
- Java IO的一些思考
- java图形界面GUI编程
- SpringBoot 使用WebSocket打造在线聊天室(基于注解)
- 面试官问:什么是布隆过滤器?
- 基于ZooKeeper的分布式Session实现
- python就业班 miniweb框架_mini-web框架
- 二元随机变量函数的分布
- python如何训练图片_Python练习第一题,在图片上加入数字
- 配置UIAutomator中的ANT环境报不是内部命令与外部命令
- mysql+inser+select_在MySQL中结合INSERT,VALUES和SELECT
- python调用程序压缩文件_Python实现文件压缩和解压的示例代码
- 20165329 Java实验四 Android程序设计
- 回顾:前端模块化和AMD、CMD规范(全)
- Java--汽车之家论坛反爬虫破解
- ubuntu升级22.04无法启动--ACPI BIOS Error
- 基于WEB的网上在线图书商城
- Java从入门到精通十一(javaIO流)
- balsamiq mockups 3.0破解教程
- Python之.loc与.iloc的用法
- PanGu STM32MP开发板更新固件
热门文章
- POJ Area of Simple Polygons 扫描线
- mysql远程连接错误10038--navicat for mysql (10038)
- Linq中dbSet 的查询
- Unity3d通用工具类之定时触发器
- 动态调用链接库(dll) 续
- python etree创建xml_Python构建XML树结构的实例教程
- java+路径拦截实现_SpringBoot实现拦截器
- 在fritzing中怎么导入_电路图制作软件(Fritzing)
- Java中String类、字符串常量池、字符串常用方法
- 初次使用Apache、ip地址、防火墙、域名、DNS、hosts文件、端口、URL介绍、Apache配置文件、配置虚拟主机、请求响应、http协议、