Java 使用 System.CurrentTimeMillis() 测量时间时出错

标签 java mysql jsp

我目前在测量 JAVA 代码中 SQL 查询所花费的时间时遇到问题。在下面的代码中,stmt.executeQuery(query.getQuery()); 将执行 SQL 查询,我使用 System.currentTimeMillis() 来查看查询需要多长时间需要。问题是,在下面的 jsp 页面中,我查看 queryTime 的结果,我得到诸如 The query take 18:00:00:055 time. 的结果一个极其简单的数据库(2 个非常小的表)和一个极其简单的查询。 18 小时显然不是一个现实的时间,因为查询在我的计算机上运行只需几毫秒。我做错了什么?

编辑:为了响应提交的答案,我将 queryDuration 与提交用于测试和获取结果的 sql 查询一起输出到控制台,例如(其中在 SQL 查询后输出毫秒)输入的内容):

query (from controller): select * from service_request
milliseconds: 1
query (from controller): select * from data_file where service_request_id =     '2'
milliseconds: 0
path: www.foobar.com/custom/bin/lib/
path: www.foobar.com/images/resources/
query (from controller): select FN_Contact from service_request where Notes   IS NOT NULL
milliseconds: 10
query (from controller): select FN_Contact from service_request where Notes IS NULL
milliseconds: 0
query (from controller): select Notes, LN_Contact from service_request where   FN_Contact = 'Amanda'
milliseconds: 0 

当一些看似更复杂的查询在更短的时间内完成时,这有什么意义? (这些表非常小,每个表有 4-5 列,每个表有 4-5 个条目)

java计算查询时间:

long queryStart = System.currentTimeMillis();
ResultSet rs = stmt.executeQuery(query.getQuery());
long queryEnd = System.currentTimeMillis();
long queryDuration = queryEnd-queryStart;
Date queryDurationTime = new Date(queryDuration);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss:SSS");
String dateFormatted = formatter.format(queryDurationTime);
queryTime = dateFormatted;

在jsp页面上显示queryTime:

<c:choose>
    <c:when test="${empty queryTime}">
    </c:when>
    <c:otherwise>
        <h3>Results:</h3>
        The query took ${queryTime} time.
    </c:otherwise>
</c:choose>

最佳答案

问题是您将以毫秒为单位的时间差转换为日期。返回以毫秒为单位的时间差 queryDuration,或者将 queryStartqueryEnd 包装在 Date 对象中,然后将两个日期相减。

关于Java 使用 System.CurrentTimeMillis() 测量时间时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32898766/

相关文章:

Java:无法使用 jdbc 从 servlet 的 doPost 插入数据

java - Main 中的 Catch All Exceptions 代码未捕获事件异常

php - 如何获得最后 10 个,然后显示随机 5

php - MySQL - 将日期和时间保存为 DATETIME 与将日期和时间保存为字符串

php - Mysql 两小时之间获取数据

java - 如何为 <form :select> from controller using properties file? 分配选项值

java - 使用良好的 Hibernate 实践获取值(value)

java - 在 Java 中创建新的 neo4j 节点和现有节点之间的关系

java - A* 寻路算法给出奇怪的路径(文本 map - 无 GUI)

java - Spring MVC 服务 Bean 加载两次