IndexedDB存储250kB/s流数据时的性能问题
Performance issues with IndexedDB storing 250kB/s streaming data
我正在为一个硬件传感器开发一个基于web的接口,该接口产生大约。250kB/s的原始数据(125 kb/s,每个样本16位)。web应用程序被设计成可视化(使用Canvas)和实时存储(使用IndexedDB)这些数据。我有性能问题与indexedDB存储。
此应用程序设计为运行数天甚至数周,并且应该可靠地存储大量数据(数十到数百MB)
因为写提交似乎是一般的性能问题,我已经重写了我的应用程序,每5秒只存储一大块数据作为非稀疏整数数组对象。这种方法有效,但我仍然得到非常不稳定的可视化性能,高CPU和高内存使用。确切的存储代码:
//dataDB = indexedDB database opened in another function
//slice = data to be stored
//sessionID = object store index
//this function is called about once every 5 seconds
//with 700 000 values in the slice array
//slice is a multidimensional array
function storeFastData(slice, sessionID){
var s = dataDB.transaction(["fastData"],"readwrite").objectStore("fastData");
var fdreq = s.get(sessionID);
fdreq.onsuccess = function(e){
var d = fdreq.result;
for(i = 0; i < slice.length; i++){
d.data[i][1] = slice[i][1];
}
s.put(d);
}
}
具体:
- IndexedDB是这个应用程序的正确选择吗?
- 我实现这个的方式是白痴吗?这是我正在做的第一个基于indexeddb的项目
- 我读到使用WebWorkers至少可以解决口吃问题,因为它可以在另一个线程上运行。这会解决我的性能问题吗?
我愿意使用新的(草案)功能,但是每次打开应用程序时需要用户交互超过5MB的存储(例如使用配额管理API),这非常麻烦,如果可能的话,我想避免这种情况。
我不使用jquery。这不能写成本机应用程序(它必须在浏览器中运行)。
IndexedDB是您的最佳选择。如果您在数据可用时快速且频繁地存储,那么应该没问题。你不用等5秒,马上存储大约200毫秒的间隔。通常一个indexeddb写操作需要20ms。
相关文章:
- 使用正则表达式评估电子邮件地址时出现性能问题
- 在循环中附加事件处理程序时出现浏览器性能问题
- 角度指令性能问题
- 奇怪的Kineticjs性能问题
- 使用HTML和JS的iPhone游戏中的性能问题,以及appMobi
- 菜单性能问题
- 性能问题:通用选择器与单独绑定
- 离子框架移动应用程序性能问题
- 性能问题高图表图和 socket.io
- 样式 DOM 上的 $.before() 性能问题
- Ajax发布到PHP脚本,每5秒查询一次MySQL数据库的性能/问题
- 循环的 JavaScript 性能问题
- 性能问题:存储对DOM元素的引用与使用选择器相比
- 很多主干视图-性能问题
- jquery性能问题,操作注册
- 在web工作者、快速定时器和$scope中遇到AngularJS性能问题$apply()
- 使用pixi和p5声音库制作的听觉反应视觉效果的性能问题
- 更多的 DOM 元素会产生性能问题
- 主要面临性能问题
- HTML 大图像性能问题