javascript - 设置 Javascript 对象以使用 Int8 和 Int16
问题描述
我有一个非常大的数据结构,其中一部分如下所示。
var Data =
{
MIDISource : {id: 0, val: 1, harm: 0},
MIDIChannel : {id: 1, val: 1, harm: 1},
MIDISplit : {id: 2, val: 0, harm: 1},
MultiTouch : {id: 3, val: 1, harm: 1},
TouchFreq : {id: 4, val: 0, harm: 1},
TouchLevel : {id: 5, val: 0, harm: 1},
TouchAttack : {id: 6, val: 0, harm: 1},
PitchWheelSens : {id: 7, val: 0, harm: 1},
ModWheelTarg : {id: 8, val: 0, harm: 1},
ModWheelSens : {id: 9, val: 0, harm: 1},
Fundamental : {id: 21, val: 1, harm: 2},
EvenHarmonics : {id: 22, val: 1, harm: 2},
// etc for about 5000 more datapoints
};
例如,所有数据点都被访问
Data.EvenHarmonics[harm].val
id 可以是 0 到 127 之间的任何值,也可以是有害的,对于每个数据点都是固定的。Val 可以是 0 到 2047 之间的任何值。目前我假设每个 id、harm 和 val 都被存储,但是普通的 Javascript 变量被存储,并且运行良好。
但是,我也有一些大型音频数据数组,并发现将它们更改为使用 Float32 肯定会加快速度,例如
const _SineTableMax = 2047;
var SineLevels = new Float32Array(128 * (_SineTableMax + 1));
因此,我想知道是否可以将每个数据点存储在一个 32 位位置,id 和harm 为 Int8,val 为 Int16。但是我看不到以这种方式映射数据的明显方式。
有什么建议么 ?
解决方案
推荐阅读
- azure-ad-b2c - 使用身份验证方法创建 b2c 用户作为 SSPR 的电子邮件
- reactjs - 在线将 reactjs 应用程序部署到 herokuapp 的问题
- azure - 如何在看门狗中获取 VM Scale 中所有 VM 的状态
- objective-c - WKWebView 实际上并不遵循重定向
- apache-spark - Kafka 删除(墓碑)不更新 Spark 结构化流中的最大聚合
- javascript - 用 Promise 同步 javascript 函数,socket.io 发射
- c - 关于如何添加保存在两个结构中的两个数字并将它们保存在第三个结构中的任何想法
- objective-c - 在 Objective-C 中,在执行密集操作的循环中,使用 @synchonized 是否有利于实现的稳定性?
- php - 如何使用 PHP 中的 prepare 方法将数据从一个表移动到另一个表
- javascript - 输入不更新