сроки операции в Java - PullRequest
       2

сроки операции в Java

0 голосов
/ 18 марта 2012

Я хочу запустить свою программу в Eclipse, но я хочу посмотреть, сколько времени потребуется для запуска программы. Другими словами, я хочу определить время моей программы. Я знаю, что в UNIX я могу рассчитывать любую операцию, помещая слово «время» перед командой в командной строке. Но я не знаю, как я смогу рассчитать время моей работы в Eclipse. Просто чтобы сделать все немного более понятным, я хочу избежать написания новых методов. Есть ли способ, которым я мог бы добавить sth к моему пути конфигурации? У кого-нибудь есть идеи, как я могу это сделать?

Ответы [ 5 ]

5 голосов
/ 18 марта 2012

Если вы не возражаете добавить две строки кода, вы можете сделать это исключительно на Java:

public class Foo {
    public static void main(String[] args) {
        long ms = System.currentTimeMillis();

        // do whatever

        System.out.println(System.currentTimeMillis() - ms);
    }
}

Вы также можете использовать nanoTime, если вам это нужно.

1 голос
/ 18 марта 2012

Добавьте system.out.println в конце вашего приложения, чтобы указать, как долго оно работает.

0 голосов
/ 18 марта 2012

Простой способ сделать это и гарантировать, что вы получите результаты - добавить следующее в начало вашего основного класса. Этот код сохранит время запуска приложения, а затем добавит хук отключения JVM, который сработает и напечатает продолжительность, когда JVM завершает работу.

final static long startTime = System.currentTimeMillis();
static {
Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        try {
            System.out.println("My program ran for "+( System.currentTimeMillis()-startTime )+" seconds.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});
}
0 голосов
/ 18 марта 2012

Добавьте плагин speed-tracer для затмения, если это веб-приложение. Это поможет вам выяснить время для всего.

0 голосов
/ 18 марта 2012

Поместите этот класс где-нибудь в вашем коде:

package your.package.name.common;

import org.apache.log4j.Logger;

import java.util.concurrent.TimeUnit;

public class CProfile {
    /**
     * Logger for this class
     */
    private static final Logger logger = Logger.getLogger(CProfile.class);

    public static final int SECONDS_TO_ALERT = 2;

    public static void slownessAlert(long startTime, String name) {
        long seconds = TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS);
        if (seconds>SECONDS_TO_ALERT){
            logger.warn("slow method detected: "+name+" "+seconds+"s");
        }
    }

}

Затем используйте этот фрагмент в вашем коде следующим образом:

public void something() {
    long startTime = System.nanoTime();

    //SOME HEAVY COMPUTATIONS

    CProfile.slownessAlert(startTime, "something");
}

Он сообщит вам о медлительности, когда это произойдет (SECONDS_TO_ALERT> 2 с).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...