2012-03-18 3 views
0

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

+0

Нужно ли вам работать на затмении? Почему бы не запустить его с терминалом? –

+1

Кажется, вам нужен профайлер. –

+0

У меня есть машина для окон, могу ли я это сделать? если я могу запустить его на терминале на окнах, не могли бы вы любезно посоветовать мне, как я могу это сделать? – BBB

ответ

1

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

+0

, вы видите, я стараюсь избегать добавления какого-либо кода в программу – BBB

5

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

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

     // do whatever 

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

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

+0

Спасибо, это сработало , – BBB

+0

@BBB Вы должны использовать shutdownhook, чтобы гарантировать получение результатов. – Java42

+0

@ChuckFricano Для этого вам не нужен крюк отключения. Вам гарантировано, что обе строки кода будут работать. Кроме того, если этот ответ сработал для вас, BBB, вы должны [принять его] (http://meta.stackexchange.com/a/5235). – Jeffrey

0

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

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> 2s).

0

Добавить плагин скорости-трассировщика, чтобы затмить, если это веб-приложение. Это поможет вам узнать время на все.

0

Простой способ сделать это и гарантировать, что вы получите результаты, чтобы добавить следующее в начало вашего основного класса. Этот код сохранит время запуска приложения, а затем добавит JVM shutdown hook, который будет срабатывать и печатать длительность при отключении 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(); 
     } 
    } 
}); 
} 
Смежные вопросы