想象一个“项目”结构(表示为 JSON 哈希)
{
id: 1,
value: 5
}
现在想象一下,我有一组 100,000 个项目,我需要对与每个项目关联的值执行计算。在计算结束时,我用新值更新每个项目。
为了快速做到这一点,我一直在使用 GSL 向量库,将每个值加载为向量的一个元素。
例如,项目:
{ id: 1, value: 5 }
{ id: 2, value: 6 }
{ id: 3, value: 7 }
变成:
GSL::Vector[5, 6, 7]
元素 1 对应于项目 id 1,元素 2 对应于项目 id 2,依此类推。然后我继续对向量中的每个元素执行逐元素计算,乘法,除法等。
虽然这可行,但让我感到困扰的是我必须依赖按 ID 排序的项目列表。
是否有另一种结构类似于散列(允许我肯定地说特定结果值对应于特定项目),但允许我像向量一样进行快速、内存高效的元素操作?
我正在使用 Ruby 和 GSL 绑定,但如有必要,我愿意用另一种语言重新编写它。