Java存储函数序列运行

时间:2017-03-02 14:58:34

标签: java arrays function

我有一个java程序,我想要做的是以某种方式存储程序运行时运行的所有函数。但我似乎无法在这件事上找到任何东西。然后还要找出哪个功能已经运行了最多的时间。

我的想法是我可以创建一个数组,为每个函数分配一个带有函数名称的变量,然后每次运行时都将char返回到数组中,并在最后打印出数组。但我不知道如何将它们存储在不同的arr [i]我每次都运行相同的功能,也不知道我怎么会找到最多跑的那个,任何帮助都非常感激。

3 个答案:

答案 0 :(得分:0)

我建议为每个方法创建一个布尔值,并在方法的开头将boolean设置为true。然后使用java.io类创建一个save方法,并将布尔名称和值保存到该文件中。

EDIT 我刚刚意识到我把布尔而不是整数。每个方法都有一个整数,并为每个方法运行执行整数++。

答案 1 :(得分:0)

AOP非常适合这样的事情。

有关使用Spring AOP库的示例,请参阅https://dzone.com/articles/monitoring-performance-spring

答案 2 :(得分:0)

我尝试了一个可能对你有帮助的程序。我创建了一个Interceptor类,它将打印出您可能需要的细节。你没有提到任何框架,所以我给你一个简单的旧java示例程序。

这种方法还可以灵活地在程序执行结束时打印所有细节。

public class Test {
    public void demoMethod() throws InterruptedException{

        Intercept.printMethodStartTime(System.currentTimeMillis());
        Intercept.printMethodName(Thread.currentThread().getStackTrace()[1].getMethodName());
        Thread.sleep(5000);
        Intercept.printMethodEndTime(System.currentTimeMillis());
    }
    public static void main(String[] args) throws InterruptedException {
        new Test().demoMethod();
    }
}

class Intercept{
    private static Long startTime;
    private static Long endTime;
    public static void printMethodName(String methodName){
        System.out.println("Current method name: "+methodName);
    }
    public static void printMethodStartTime(Long time){
        startTime = time;
        System.out.println("Method started at "+startTime);
    }
    public static void printMethodEndTime(Long time){
        endTime = time;
        System.out.println("Method ended at "+endTime);
        printMethodRunTime();
    }
    public static void printMethodRunTime(){
        System.out.println("Method ran for "+((endTime-startTime)/1000)+" seconds");
    }
}