我正在尝试计算我写的程序的性能,但我遇到的情况是这个...
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)
编辑:我忘了最初的目的:性能测量 如果它只是用于简单测量,那么您的实际代码就可以了。 你应该尝试寻找外部工具,如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());
}
可以找到更多示例here。
这是一个相当简单的解决方案,但您可以通过解析日期并查看精度并仅显示非空零件来尝试改进它。