javascript – IndexedDB存储250kB / s流数据的性能问题

前端之家收集整理的这篇文章主要介绍了javascript – IndexedDB存储250kB / s流数据的性能问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个基于Web的硬件传感器接口,可以产生大约. 250kB / s的原始数据(125 kS / 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.
原文链接:https://www.f2er.com/js/157331.html

猜你在找的JavaScript相关文章