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