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

我需要分析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来知道执行时间。

用java代码写美国时间_如何衡量Java代码所用的时间?相关推荐

  1. java程序员用代码写的情书_一位Java程序员写给女友的情书

    我能抽象出整个世界,但是我不能抽象你... 想让你成为私有常量,外部函数无法访问你... 又想让你成为全局常量,在整个生命周期随时都可以调用你... 因为世界上没有这样的常量... 所以我无法定义你. ...

  2. java能写驱动吗_使用纯java jdbc驱动程序实现数据库的连接

    1.准备工作: 准备相关的软件(Eclipse除外,开源软件可以从官网下载) <1>.Microsoft SQL server 2005 Express Edition <2> ...

  3. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...

  4. java程序员用代码写的情书_用代码写的三行情诗,你懂得程序员的浪漫吗?

    原标题:用代码写的三行情诗,你懂得程序员的浪漫吗? 在一般人眼里,程序员是一群古板,技术宅,不懂得浪漫的屌丝,但其实这些大神们浪漫起来也是相当可以的!下面让我们来看一下程序员们用代码写的三行情诗 1. ...

  5. mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)

    对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优 ...

  6. 接口中的成员只有静态常量和什么_为什么阿里工程师代码写的好?看看他的代码规范就知道了...

    摘要 本文主要讲解阿里JAVA开发手册中比较重要的设计规范,这些重要的设计规范有助于我们改进自己的代码,提升系统的系统的性能. 曾经与一位从阿里出来的Java工程师一起工作过一段时间,他的技术说不上非 ...

  7. 夸奖对方代码写的好_我写出这样干净的代码,老板直夸我

    一份整洁的代码对于一个系统是多么重要.如果代码写的乱七八糟,最后的结果就是无法对这些代码进行有效的管控.很有可能会毁掉这个系统. 什么才是整洁的代码? Biarne Stroustrup -[C++语 ...

  8. 怎么帮java转换成类图_有把java代码直接转成uml类图的工具吗 – 手机爱问

    2012-05-31 如何将JAVA程序转化成C程序? 给你代码: typedef unsigned char byte; //这是个转换的基础数组,使用查表的方法将十六进制字符转换成数值 stati ...

  9. java前端插件有哪些_【转】几个前端时间插件总结

    几个前端时间插件总结 总结一下几款时间插件,分别是 - [ ] jeDate 下载地址 - [ ] bootstrap-datetimepicker 下载地址 - [ ] My97DatePicker ...

最新文章

  1. 吴恩达演讲直指AI落地三大挑战,并提出解决方案(附视频)
  2. 第一次胜过MobileNet的二值神经网络,-1与+1的三年艰苦跋涉
  3. Libnids库-网络入侵检测的基础框架
  4. UA MATH563 概率论的数学基础2 随机变量1 随机变量与分布函数
  5. java之jsp页面语法
  6. HDU - 6746 Civilization(贪心+模拟)
  7. 多图文帖智能封面提取方案
  8. 【Kafka】kafka 根据 ConsumerOffsetChecker获取group当前消费情况
  9. [转]2020年4月github上最热门项目-python
  10. oracle导入到sqlserver2005
  11. uploadify 302 php,jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
  12. linux将pdf转txt,如何快速把PDF转换成TXT
  13. photoshop 插件_Photoshop的线性光
  14. spring boot英语在线学习系统毕业设计-附源码211714
  15. gazebo 模型导入
  16. Android检查更新下载安装
  17. R shiny 交互式表格
  18. 深度学习自学第四周:近几年的经典神经网络结构
  19. 转:成功的背后!(给所有IT人)
  20. 安超云生态|携手中电福富 打造党政协同一体化云办公解决方案

热门文章

  1. Flex布局 让你的布局更完美
  2. java 函数式编程 示例_功能Java示例 第8部分–更多纯函数
  3. postgresql_PostgreSQL开放自由
  4. java bean 验证_Java Bean验证基础
  5. 解耦,未解耦的区别_幂等与时间解耦之旅
  6. gradle maven_将工件从Gradle自动提升到Maven Central
  7. cxf添加拦截器_在CXF API和拦截器中添加Gzip压缩
  8. JDK 14:CMS GC是OBE
  9. 带有Spring Boot和Spring Cloud的Java微服务
  10. 使用Spring Boot和H2可以完全工作的原型