java统计方法_统计方法运行时间【Java实现】

接口Command:定义命令的执行操作

package common;

public interface Command {

// 运行方法

void run();

}

CommandRuntime 类:统计命令运行时间,使用命令模式

package common;

public class CommandRuntime {

private Command command;

public CommandRuntime(Command command)

{

this.command = command;

}

public long runtime() {

long start = System.currentTimeMillis();

command.run();

long end = System.currentTimeMillis();

return end-start;

}

}

CombinationCommand:  解决组合问题的命令, 采用类适配器模式:

package algorithm.problems;

import algorithm.permutation.Combination;

import common.Command;

public class CombinationCommand extends Combination implements Command {

public CombinationCommand(int n) {

super(n);

}

public void run() {

solution();

}

}

CombinationRuntime: 测量组合问题的运行时间

package algorithm.problems;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import common.CommandRuntime;

public class CombinationRuntime {

public static void main(String[] args)

{

try {

BufferedWriter fileWriter = new BufferedWriter(new FileWriter("runtime.txt"));

fileWriter.write("runtime: ");

fileWriter.newLine();

for (int i=1; i < 30; i++) {

CommandRuntime comRuntime = new CommandRuntime(new CombinationCommand(i));

long runtime = comRuntime.runtime();

fileWriter.write( "n = " + i + " : " + runtime + " ms");

fileWriter.newLine();

}

System.out.println("over.");

fileWriter.close();

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

}

另外一种使用反射机制实现的运行时间测量框架:

package common;

import java.lang.reflect.Constructor;

import java.lang.reflect.Method;

public class RuntimeMeasurement {

public RuntimeMeasurement(int maxsize) {

this.maxsize = maxsize;

time = new double[maxsize];

}

// 问题最大规模: 以 10 的 size 次幂计

private int maxsize ;

// 运行时间以 ms 计

private double[] time ;

/**

* measureTime : 对指定类型的对象调用指定参数列表的指定方法,并测量其运行时间

* @param type 指定对象类型,必须有一个 参数类型为 int 的公共构造器方法

* @param methodName 指定测试方法名称,要求是空参数列表

*/

public void measureTime(Class> type, String methodName)

{

try {

Constructor> con = type.getConstructor(int.class);

Method testMethod = null;

for (int i = 0; i < time.length; i++) {

Object obj = con.newInstance(power10(i+1));

testMethod = type.getMethod(methodName, new Class>[]{});

long start = System.nanoTime();

testMethod.invoke(obj, new Object[] {});

long end = System.nanoTime();

time[i] = ((end - start) / (double)1000000) ;

}

} catch (Exception e) {

e.printStackTrace();

System.out.println(e.getMessage());

}

}

/**

* showTime : 显示已经测量获得的运行时间,在 measureTime 方法调用后调用该方法。

*/

public void showTime()

{

for (int i=0; i < time.length; i++) {

System.out.printf("n = %12d : " , power10(i+1));

System.out.printf("%12.3f\n", time[i]);

}

}

private int power10(int n)

{

int result = 1;

while (n > 0) {

result *= 10;

n--;

}

return result;

}

}

java监测方法运行时间&sol;效率方法

前言: 这周在写一个小项目,虽然小但是是纯调外部接口的,调完了接口还不停的循环接口返回的数据(已转换JSONArray),然后再判断值,再做不同处理,关键是数据量还比较大,这刚做完还没开始上线,测试也 ...

spring3&period;0框架检测方法运行时间测试&lpar;转&rpar;

主要利用了Spring AOP 技术,对想要统计的方法进行横切处理,方法执行前开始计时,方法执行后停止计时,得到计时方法就是该方法本次消耗时间. 步骤: 首先编写自己的Interceptor类来实现M ...

成绩统计程序(Java)

我的程序: package day20181018;/** * 成绩统计系统 * @author Administrator */import java.util.Scanner;//提供计算机直接扫 ...

ASP&period;net中网站访问量统计方法代码&lpar;在线人数,本月访问,本日访问,访问流量,累计访问&rpar;

一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime),些表的信 ...

记一次使用修改字节码的方法解决java&period;lang&period;NoSuchMethodError

接兔兔国际sdk ane 充值界面选择兔币充值就会闪退, 观察logcat 04-19 10:10:54.224: E/AndroidRuntime(20315): FATAL EXCEPTION: ...

JAVA写JSON的三种方法,java对象转json数据

JAVA写JSON的三种方法,java对象转json数据 转自:http://www.xdx97.com/#/single?bid=5afe2ff9-8cd1-67cf-e7bc-437b74c07a ...

基于git命令的代码统计方法

基于git命令的代码统计方法 没什么好说的,基于git log命令,使用前提是安装了git ...... .统计所有人代码量 统计所有人代码增删量,拷贝如下命令,直接在git bash等终端,git项 ...

随机推荐

ios 中直接修改frame里边某个属性的简便方法

参考:http://www.cnblogs.com/wengzilin/p/4359865.html 在iOS中view的frame属性使用地太频繁了,尤其是调UI的时候.我们知道,正常情况下我们无法 ...

img图片之间的间距问题

[问题]页面中如果有多张图片,那么图片之间会有一些间距,在某些情况下(如切好的图片再次拼接),在显示上就会出现一些问题.效果如下: 对应代码:

WinForm中的DataGridView控件显示数据字典方案2

winform代码分析object数据库 做这部分功能的时候,上网搜索了很多资料,发现很少涉及到这方面的解决方案,找了相关的问题帖子,很多人都叫使用视图去处理,当然,用视图是可以解决这个问题,但是,这 ...

自定义滚轮效果选择器spinnerwheel的使用总结

项目中有使用到像IOS滚轮效果的选择时间或数字的组件:android-spinnerwheel github地址:https://github.com/ai212983/android-spinner ...

tcpdump的源码分析

在源文件 tcpdump.c 中: 结构体数组“static struct printer printers[]”定义了tcpdump所跟参数及其对一个的处理函数. struct printer {  ...

全新安装免费的OS X Mavericks 10&period;9正式版--安装U盘制作指南

承诺大家的教程来了,这个教程是介绍如何在Mac下制作安装正版USB启动安装程序,原教程出自Tonymacx86.我只是加入了自己的理解,用自己的方式给大家讲这个过程.这里要把所有的成绩归功于Tonym ...

docker~save与load的使用

回到目录 对于没有私有仓库来说,将本地镜像放到其它服务器上执行时,我们可以使用save和load方法,前者用来把镜像保存一个tar文件,后台从一个tar文件恢复成一个镜像,这个功能对于我们开发者来说还 ...

张高兴的 Windows 10 IoT 开发笔记:部署 ASP&period;NET Core 2 应用

今天是大年初二,都去走亲戚了吧,享受一下这难得的能和亲友相聚的时光.而我就不一样了,今天一回到家就又开始瞎折腾了,哈哈哈. 问题背景 最近花了点时间用 ASP.NET Core 2 写了个个人博客,中 ...

织梦CMS增加复制文档功能

打开后台目录(/dede)下archives_do.php约430行下添加: /*----------------------------- //复制文档 ---------------------- ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值