java - MongoDB性能测试-基本理解-Java
问题描述
我想检查 CRUD 操作在 MongoDB 上执行的速度。
因此我用以下代码记录了时间:
long start = System.nanoTime();
FindIterable<Document> datasetFindIterable = this.collection.find(filter);
long finish = System.nanoTime();
long timeElapsed = finish - start;
我知道,FindIterable 对象带有“executionStats”和“executionTimeMillis”:
JSONObject jsonobject = (JSONObject) parser.parse(datasetFindIterable.explain().toJson())
JSONObject executionStats = (JSONObject) jsonobject.get("executionStats");
Long executionTimeMillis = (Long) executionStats.get("executionTimeMillis");
但是我有点困惑,我得到以下结果:
开始(ns) | 完成(ns) | 已用时间 (ns) | executionTimeMillis (毫秒) |
---|---|---|---|
582918161918004 | 582918161932511 | 14507 | 1234 |
14507 纳秒为 0.014507 毫秒
怎么可能,executionTimeMillis (1234 ms) 比 System.nanoTime() (=0.014507 ms) 之间的差异大得多。不应该反过来吗,因为 System.nanoTime() 也需要一些时间来执行自身?
解决方案
如果我没记错的话,有可用的异步和同步 MongoDB 驱动程序。
如果您使用异步驱动程序,则可能是问题所在,即
"long finish = System.nanoTime();"
命令不等待
"FindIterable<Document> datasetFindIterable = this.collection.find(filter);"
命令返回一个值,因此时间差可能低于存储在 FindIterable 变量中的执行时间。
推荐阅读
- nginx - 有没有办法在 kubernetes 的 gunicorn 后面更新烧瓶中的主机
- c++ - 将要编译的静态库与主应用程序链接
- reactjs - 来自 App.js 的 React-Native @react-navigation/stack 错误
- sql - 如何在 mssql 中循环表列并创建条件插入语句
- python - 如何获得连续相同的输入来中断循环?
- r - 从数据框中的列中选择变量以在 Shiny R 中绘制
- angular - *ngFor 路由器出口没有更新列表
- python - 在每次谷歌搜索时调用 ubuntu 上的 python 脚本
- reactjs - Chonky.io + ReactJS 类组件全功能
- java - Firebase Android emailpass 身份验证错误