Как установить точность автоматически в Java

1

Я пытаюсь рассчитать производительность для программ, которые я написал, но ситуация, с которой я столкнулся, - это...

long start = System.currentTimeMillis();
my program....
long end = System.currentTimeMillis();
end = end-start;

/* Below are things I tried which doesn't work
*********prints (same number of 0 as specified in decimalformat********
NumberFormat formatter = new DecimalFormat("#0.0000");
System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");
*********prints number but not able to put it in decimals ********
float time = end-start;
System.out.printf("%3.8f",time);
*/

Как я могу это сделать, чтобы он печатал 0,000x раз без печати 0. Например, если программа заканчивается в 0,7 миллисекундах, она должна отображать 0,0007 секунды

  • 0
    Вы имеете в виду первый 0? пожалуйста, добавьте пример желаемого выхода
  • 0
    Я обновил
Теги:
time
precision

1 ответ

0

edit: Я забыл исходную цель: измерение производительности. Ваш реальный код в порядке, если он просто для простого измерения. Вы должны попробовать искать внешние инструменты, такие как jvisualvm (входит в jdk) или YourKit, если вы хотите что-то более причудливое и продвинутое

Вы должны попробовать форматировать окончательный результат с помощью SimpleDateFormat.

 /**
 * Return date in specified format.
 * @param milliSeconds Date in milliseconds
 * @param dateFormat Date format 
 * @return String representing date in specified format
 */
public static String convertMilliSecondsToDate(long milliSeconds, String dateFormat)
{
    // Create a DateFormatter object for displaying date in specified format.
    DateFormat formatter = new SimpleDateFormat(dateFormat);

    // Create a calendar object that will convert the date and time value in milliseconds to date. 
     Calendar calendar = Calendar.getInstance();
     calendar.setTimeInMillis(milliSeconds);

     return formatter.format(calendar.getTime());
}

Дополнительные примеры можно найти здесь.

Это довольно простое решение, но вы можете попробовать улучшить его, проанализировав дату и увидев точность и отобразив только ненулевую часть.

  • 0
    Можете ли вы скопировать соответствующие примеры по ссылке? Это полезно, если ссылки в будущем устаревают.
  • 0
    В этом случае я не преобразован в дату, но время. Если бы я назвал 'public static long convertMilliSecondsToSeconds (long milliSeconds) {return (milliSeconds / 1000); } ', который не будет работать, так как это то же самое, если я просто использую long как print. Если я использую метод, который вы описали выше, что я собираюсь ввести как dateFormat?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню