gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 04:52:33 29 4
gpt4 key购买 nike

我正在为硬件传感器开发一个基于 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 的项目
  • 我读到过使用 WebWorker 至少可以解决卡顿问题,因为它可以在另一个线程上运行。这会解决我的性能问题吗?

我愿意使用新的(草稿)功能,但每次打开应用程序时都需要用户交互来存储超过 5MB(例如使用配额管理 API),这非常麻烦,如果可能的话我想避免这种情况.

我不使用 jquery。这不能编写为 native 应用程序(它必须在浏览器中运行)。

最佳答案

IndexedDB 是您的最佳选择。如果您在数据快速且频繁地可用时立即存储,那应该没问题。你不要等待 5 秒,立即存储大约 200 毫秒的间隔。通常一个 indexeddb 写操作需要 20 毫秒。

关于javascript - IndexedDB 存储 250kB/s 流数据的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30687226/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com