用java代码写美国时间_如何衡量Java代码所用的时间?
发布日期:2021-10-31 15:52:16 浏览次数:2 分类:技术文章

本文共 1709 字,大约阅读时间需要 5 分钟。

本问题已经有最佳答案,请猛点这里访问。

我需要分析Java中的一些算法的复杂性。为此,我计划提供大量的输入,并测量Java实现所花费的时间。检查某些代码行之间的时间最精确和准确的方法是什么?我需要精确到毫秒…

不完全是!我在寻找类似System.NanoTime()的东西,但是上面提到的问题更多的是关于一些正式的基准测试。它需要一些深度的阅读,这可能对一个随便的读者没有帮助。

@Mangatrai:作为一个"临时读者"在这个领域是危险的:几乎所有你真正需要"检查代码行之间的时间"的情况都会受到这个问题中讨论的内容的严重影响。否则,你将得到毫无价值或误导性的数据,并做出错误的决定。

你的问题与时间复杂性有什么关系?您是否了解时间复杂性是静态分析,而您要求绩效基准?

@乔阿希姆,我明白。对于不经意的读者,我的意思是为了自己的理解而运行一些快速测试。

@VAL时间复杂性确实是一个静态分析,但是我们可以通过性能基准来评估它。说第一次跑步我给了N个元素,然后是2N,3N…等等。通过绘制一个图表,根据所花费的时间,我可以得到一个概念,比如复杂度是线性的还是更高的多项式。当然,我们不会得到确切的时间复杂性,但我问了更多关于玩一些代码的问题。

甚至可以使用System.nanoTime()获得纳秒分辨率。

但是,您可能需要考虑以下几点:

如何在Java中编写正确的微基准?

你提到的问题很好。我会通读的…

使用speed4j等库,不仅可以对调用进行基准测试,还可以在日志中提供统计信息,还可以通过jmx远程查看。最好使用这样的库,而不是放置System.Current。在整个代码中调用。

+1用于添加新内容=)

酷!很好的补充

假设你有一个特别的方法,你想把它放在显微镜下。您可以这样做:

long time1 = System.nanoTime();

thatMethod();

long time2 = System.nanoTime();

long timeTaken = time2 - time1;

System.out.println("Time taken" + timeTaken +" ns");

计算机真的很快,所以在使用getTimeMillis()时可能会出现时差,可能为零。因此,使用nanoTime()

您也可以使用Caliper。他们有一段视频要开始。另外,仔细阅读creichen所指的答案。里面有很多很棒的东西。

使用System.nanoTime()或System.currentTimeMillis()来获取代码的开始和结束时间。请注意,微观基准只测量JVM性能的基本方面。注意JVM的预热阶段,在这之后JIT就开始了。

我建议使用system.nantime()stackoverflow.com/questions/11591000/…

long startTime = System.currentTimeMillis();

//code lines whose time you want to calculate

long endTime = System.currentTimeMillis();

System.out.println("Took"+(endTime - startTime) +" ms");

我很想这么做,但是……请格式化您的代码。避免陈述已经陈述的内容。

long start =  System.currentTimeMillis();

// your code

long end = System.currentTimeMillis();

long diff = end-start;

long start =  System.nanoTime();

// your code

long end = System.nanoTime();

long diff = end-start;

long diffInMillis = diff/1000000;

我建议不要使用currentTimeMillis来知道执行时间。

转载地址:https://blog.csdn.net/weixin_39987847/article/details/114567814 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java 延迟初始化_Java并发编程——延迟初始化占位类模式
下一篇:java的Swing里怎么new一条线_java – 在JFrame上绘制一条线

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月24日 14时30分20秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

android studio 70 歌曲服务器搭建 歌曲app 完整代码(发布版) 2019-04-21
Android单击事件处理与监听003 2019-04-21
java sqlite 建表语句_SQLite不能创建表 2019-04-21
java数据流转化为图片_输出流读取文件内容转换为图片 2019-04-21
java输入格式_JAVA自学笔记: 利用循环设计当用户输入格式错误的时候重新输入... 2019-04-21
qt界面黑的咋办_关于 Qt设置置顶窗口,透明部分显示黑色底色(已设置透明窗口) 的解决方法... 2019-04-21
打开stp选择哪个许可证_全省首张“广播电视节目制作经营许可证”电子证照上线“皖事通”... 2019-04-21
python要有什么基础知识_Python基础知识 2019-04-21
java scavenge_Java虚拟机(JVM)垃圾回收器Parallel Scavenge收集器 - Break易站 2019-04-21
java wireshark_java wireshark 16进制复制的字符串转换字节数组 2019-04-21
java aio 场景_Java中BIO、NIO、AIO的区别和应用场景 2019-04-21
java 拼图游戏_Java 拼图游戏 2019-04-21
java限制只能修改一次订单_拥有可以动态更改订单的Java Comparator是否可以? 2019-04-21
cephfs java api_CephFS 使用 2019-04-21
linux 的fork函数原型,【操作系统】关于fork() 2019-04-21
linux 图标root运行,linux – 从启动器以root身份运行Pycharm 2019-04-21
linux如何进去分区模式,linux磁盘分区模式 2019-04-21
linux CMakeCache.txt,Cmake入门教程 - 编写CMakeLists.txt文件编译C/C++程序 2019-04-21
linux shell lastindexof function,lastIndexOf和substr的应用案例 2019-04-21
linux优化deepin启动速度,如何让deepin启动更快? 2019-04-21