如何获得方法的执行时间?是否有Timer实用程序类用于计算任务需要多长时间等等?
Google上的大多数搜索会返回计划线程和任务的计时器的结果,这不是我想要的.
我想要这样的东西:
public class Stream
{
public startTime;
public endTime;
public getDuration()
{
return startTime - endTime;
}
}
Run Code Online (Sandbox Code Playgroud)
同样重要的是,例如,如果startTime为23:00,endTime为1:00,则持续时间为2:00.
在Java中使用哪些类型来实现这一目的?
我有一个程序,我自己用java编写,但我想测试方法执行时间并获得特定方法的时间.我想知道这是否可能,或许某种程度上是一个eclipse插件?或者可能插入一些代码?
我知道,这是一个相当小的程序,不超过1500行,这将是一个更好的专用工具或System.currentTimeMillis()?
非常感谢
我有一个10和20的问题游戏.我需要计算用户完成游戏后经过的时间.
Timer T=new Timer();
T.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable()
{
public void run()
{
countdown.setText(""+count);
count++;
}
});
}
}, 1000, 1000);
Run Code Online (Sandbox Code Playgroud)
我用这个来阻止柜台:
T.cancel();
Run Code Online (Sandbox Code Playgroud)
现在我需要两件事:
有一个桌面应用程序使用Thread.sleep()来实现长(数分钟或数小时)的延迟。从Windows XP(至少)到Windows 7,该应用程序都可以正常工作。该应用程序将计算将来需要执行的操作,然后单击Thread.sleep(msToWait)。即使系统在等待期间碰巧进入了S3睡眠状态,这也可以正常工作。
但是,从Windows 10开始,如果机器位于S3中,则Thread.sleep()之后的代码不会“按时”执行。看来机器开始在“ msToWait”处加上机器进入S3的时间开始执行代码(目前尚不能百分百确定,但有可能)。
Windows的早期版本没有表现出这种现象。不管睡眠状态如何,Thread.sleep()之后的代码都会等待正确的时间。
测试是在当前的JVM 1.7上进行的。
这是Windows 10错误吗?这是JVM错误吗?有解决方法吗?
附加数据:
开发了测试程序和程序。步骤是运行程序,使机器休眠约一分钟,然后唤醒机器并等待程序完成。
如果此程序在JVM版本为25.40-b25的Windows 10(报告为8)上运行,它将失败:
C:\Users\Tester\Downloads>SleepTester.exe
Wed Apr 01 10:47:35 PDT 2015 Using default number of minutes: 5
Wed Apr 01 10:47:35 PDT 2015 You can use "SleepTester -minutes 10" to have it sleep for 10 minutes, for example.
Wed Apr 01 10:47:35 PDT 2015 JVM Version: 25.40-b25 Windows Version: Windows 8
Wed Apr 01 10:47:35 PDT 2015 The program will now wait for 5 minutes. Expect wrap-up at Wed …Run Code Online (Sandbox Code Playgroud) 我正在尝试用java创建基准测试.目前我有以下简单的方法:
public static long runTest(int times){
long start = System.nanoTime();
String str = "str";
for(int i=0; i<times; i++){
str = "str"+i;
}
return System.nanoTime()-start;
}
Run Code Online (Sandbox Code Playgroud)
我目前在另一个多次发生的循环中多次进行此循环,并获得运行此方法所需的最小/最大/平均时间.然后我在另一个线程上开始一些活动并再次测试.基本上我只想获得一致的结果......如果我有一千万次runTest循环,它似乎非常一致:
Number of times ran: 5
The max time was: 1231419504 (102.85% of the average)
The min time was: 1177508466 (98.35% of the average)
The average time was: 1197291937
The difference between the max and min is: 4.58%
Activated thread activity.
Number of times ran: 5
The max time was: 3872724739 (100.82% of the average) …Run Code Online (Sandbox Code Playgroud) 像DbVisualizer这样的工具通常会在执行数据库查询后显示 exec/fetch 时间。通过 JDBC 执行查询后是否可以访问此类性能指标?
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
// missing functionality:
float executionTime = rsmd.getExecTime();
float fetchTime = rsmd.getFetchTime();
Run Code Online (Sandbox Code Playgroud)
我没有在ResultSet或ResultSetMetaData类中找到任何这样的性能测量功能。没有比使用系统时钟“手动”测量经过时间更好的方法了,例如如何计算 java 中事件的经过时间?
java ×8
benchmarking ×2
time ×2
android ×1
database ×1
jdbc ×1
jvm ×1
jvm-hotspot ×1
optimization ×1
performance ×1
sleep-mode ×1
timing ×1
windows ×1
windows-10 ×1
windows-8 ×1