接口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监测方法运行时间/效率方法
前言: 这周在写一个小项目,虽然小但是是纯调外部接口的,调完了接口还不停的循环接口返回的数据(已转换JSONArray),然后再判断值,再做不同处理,关键是数据量还比较大,这刚做完还没开始上线,测试也 ...
spring3.0框架检测方法运行时间测试(转)
主要利用了Spring AOP 技术,对想要统计的方法进行横切处理,方法执行前开始计时,方法执行后停止计时,得到计时方法就是该方法本次消耗时间. 步骤: 首先编写自己的Interceptor类来实现M ...
成绩统计程序(Java)
我的程序: package day20181018;/** * 成绩统计系统 * @author Administrator */import java.util.Scanner;//提供计算机直接扫 ...
ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)
一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime),些表的信 ...
记一次使用修改字节码的方法解决java.lang.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.9正式版--安装U盘制作指南
承诺大家的教程来了,这个教程是介绍如何在Mac下制作安装正版USB启动安装程序,原教程出自Tonymacx86.我只是加入了自己的理解,用自己的方式给大家讲这个过程.这里要把所有的成绩归功于Tonym ...
docker~save与load的使用
回到目录 对于没有私有仓库来说,将本地镜像放到其它服务器上执行时,我们可以使用save和load方法,前者用来把镜像保存一个tar文件,后台从一个tar文件恢复成一个镜像,这个功能对于我们开发者来说还 ...
张高兴的 Windows 10 IoT 开发笔记:部署 ASP.NET Core 2 应用
今天是大年初二,都去走亲戚了吧,享受一下这难得的能和亲友相聚的时光.而我就不一样了,今天一回到家就又开始瞎折腾了,哈哈哈. 问题背景 最近花了点时间用 ASP.NET Core 2 写了个个人博客,中 ...
织梦CMS增加复制文档功能
打开后台目录(/dede)下archives_do.php约430行下添加: /*----------------------------- //复制文档 ---------------------- ...