记录几个测试算法性能的工具类,方便以后测试算法.

Stopwatch类:可以得到算法的执行时间(单位:s,小数点后3位)

   1: public class Stopwatch {
   2:     private long start;
   3:     
   4:     public Stopwatch() {
   5:         start = System.currentTimeMillis();
   6:     }
   7:     
   8:     public double elapsedTime(){
   9:         long now = System.currentTimeMillis();
  10:         return (now - start) / 1000.0;
  11:     }
  12: }

具体使用方法:
   1: public static void main(String[] args) {
   2:         Stopwatch timer = new Stopwatch();
   3:          /*调用某个算法*/
   4:         double spend = timer.elapsedTime();
   5:         /*spend就是调用的算法消耗的时间*/
   6:     }

例如:测试选择排序和插入排序的性能

   1: public class SortCompare {
   2:     public static double time(String alg,Comparable[] a){
   3:         Stopwatch timer = new Stopwatch();
   4:         
   5:         if("Insert".equals(alg) || "Insertion".equals(alg)) 
   6:             new Insertion().sort(a);
   7:         else if("Select".equals(alg) || "Selection".equals(alg)) 
   8:             new Selection().sort(a);
   9:         /*此处还可以添加其他的排序算法*/
  10:         
  11:         return timer.elapsedTime();
  12:     }
  13:     
  14:     public static double timeRandomInput(String alg,int times,int length){
  15:         double total = 0.0;
  16:         Double[] a = new Double[length];
  17:         for(int i = 0;i<times;i++){
  18:             for(int j = 0;j<length;j++)
  19:                 a[j] = StdRandom.uniform();
  20:             total += time(alg, a);
  21:         }
  22:         return total;
  23:     }
  24:     
  25:     public static void main(String[] args) {
  26:         String alg1 = args[0];
  27:         String alg2 = args[1];
  28:         int times = Integer.parseInt(args[2]);
  29:         int length = Integer.parseInt(args[3]);
  30:         double t1 = timeRandomInput(alg1, times, length);
  31:         double t2 = timeRandomInput(alg2, times, length);
  32:         StdOut.printf("For %d randomDoubles \n   %s is ", length,alg1);
  33:         StdOut.printf("%.1f times faster than %s\n", t2/t1,alg2);
  34:     }
  35: }

测试结果
可以看出结果大致在1~3之间….
总结:
在测试或者比较算法的性能时,可以以SortCompare为模板,比较不同算法之间的差异.

转载于:https://blog.51cto.com/youngcold/1112813

测试算法(性能)的工具类相关推荐

  1. java 类数组_Java常用类-字符串、日期类、算法及数组工具类等

    大家好,乐字节的小乐又和大家见面了.这次要给大家讲述的是Java常用类. 主要有以下知识点: Ø 字符串相关类(String .StringBuffer.StringBuilder) Ø 算法及数组工 ...

  2. 基于Java的(SM2_SM3_SM4)国密算法, 加密解密工具类及测试demo

    编写本文的同时借鉴了多位同学写的demo, 最后发现这位同学写的最详细, 放上该作者的链接, 原版链接: https://download.csdn.net/download/ererfei/9474 ...

  3. oracle orion —— 测试io性能的工具!

    Oracle orion orion,一款由Oracle公司提供,专门用于模拟数据库运行机制来测试存储的优秀IO存储测试软件,可以在不运行oracle数据库的情况下,仿真OLTP随机操作(测试IOPS ...

  4. [SQL Server]用于压力测试和性能分析的两个支持实用工具[转]

    微软有两个不提供支持服务的SQL Server压力测试和性能分析工具.具体看微软知识库: http://support.microsoft.com/?kbid=887057 分别是: Read80Tr ...

  5. 30_java之DButils工具类

    01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类* a: 概述* DBUtils是java编程中的数据库操作实用工具,小巧简单实用.* DBUtils封装了 ...

  6. java 数字大小写转换工具类--适用于打印收据

    本工具类主要实现数字double1000.00====>>零万壹仟零佰零拾零元零角零分,注释很详细,就不多做介绍了 /*** 不考虑分隔符的正确性*/private static fina ...

  7. mykit-excel之——这是我用过的最好用的导出Excel的工具类

    mykit-excel的github链接地址为:https://github.com/sunshinelyz/mykit-excel  欢迎各位Star和Fork源码,也欢迎大家pr你牛逼哄哄的代码. ...

  8. 不要再用main方法测试代码性能了,用这款JDK自带工具

    前言 作为软件开发人员,我们通常会写一些测试程序用来对比不同算法.不同工具的性能问题.而最常见的做法是写一个main方法,构造模拟场景进行并发测试. 如果细心的朋友可能已经发现,每次测试结果误差很大, ...

  9. Java学习笔记Day06 工具类及常用算法

    第六章 工具类及常用算法 文章目录 第六章 工具类及常用算法 Java语言基础类 Java基础类库 Object类 概述 toString方法 方法摘要 覆盖重写 equals方法 方法摘要 默认地址 ...

最新文章

  1. Sharepoint the file is locked for use domain\user edit.文件被锁定,解锁方式
  2. 如何绘制caffe网络训练曲线
  3. java map join_HashMap 常见应用:实现 SQL JOIN
  4. 获取2个地址之间的距离(高德API)
  5. aftool刷工具提示15天_【15天】【指数600+】关键词百度首页【实战分析】【面授学员】...
  6. bzoj1036 树的统计Count 树链剖分
  7. 05-if和switch的简单比较
  8. 使用Eclipse进行远程调试 外加 ant 直接打包到服务器
  9. 利用iptabls的NFLOG记录自己的HTTP HTTPS上网行为
  10. 年薪百万架构师首次分享 Java 程序员黄金 5 年进阶心得!
  11. python画圆并填充图形颜色_python turtle我想用五种颜色画五个圆,并且用画圆周的颜色填充,老是出问题,怎么回事,怎么修改?:python颜色代码...
  12. 跨域访问JQuery+.NET实现的一种思路,以及极简单Demo
  13. 未来改变世界的十大新技术
  14. 子列和列_最大子列和的四种算法总结
  15. java的path的设置路径_java安装path设置
  16. 有别于普通专线的BGP线路
  17. h5跳转页面很慢_【干货】小技巧实现H5跨页帧数跳转
  18. mac 不显示 外接屏幕_mac连接投影仪不显示怎么办-mac外接显示器设置教程 - 河东软件园...
  19. 爬虫模拟用户增加阅读量
  20. E3ZG_D62传感器 STM32C8T6

热门文章

  1. swift学习一:介绍,开发文档下载
  2. 推荐一本好书《改变,从阅读开始》
  3. [转] HOWTO:使ASP.NET网站Forms验证可以指定多个登录页面
  4. 去掉微软认证的WINDOWS盗版标志
  5. linux wine 中文乱码,Linux下使用Wine出现中文乱码的解决方法
  6. QEMU — I/O 设备操作
  7. Linux_LDAP+NFS+autofs
  8. Linux内核移植之二:Kconfig分析
  9. 性能测试场景设计之用户模式设置
  10. Webstrom卡顿问题解决