我可以更快地找到比数组更多的索引吗?

碎纸机2500

我将顶点保留在列表中,我只想将顶点添加到列表中(如果尚未包含顶点)。如果它不包含它,我将其添加到列表中,然后将索引添加到名为tris的列表中。但是,如果列表确实包含顶点,则应该找到其所在位置的索引,然后将该索引添加到tris列表中。这是我想出的最快的方法。有没有更快的方法?

Hashtable vertIndexes;
List<Vector3> verts;
List<int> tris;

foreach (var vert in vertsOutput)
{
    Vector3 p = point + vert;
    if(!vertIndexes.Contains(p))
    {
        vertIndexes.Add(p, verts.Count);
        tris.Add(verts.Count);
        verts.Add(p);
    }
    else
    {
        tris.Add((int)vertIndexes[p]);
    }
}
usr

目前,您正在为每个项目执行两个哈希表操作。您可以保存一个:

Dictionary<Vector3, int> vertIndexes;
...

int index;
if(vertIndexes.TryGetValue(p, out index))
 //present at given index
else
 //not present

TryGetValue 同时测试是否存在并返回存储的值。

使用自定义哈希表可能会更快。Dictionary具有一些一般性所需的开销,而您不需要。例如,它使用的模运算符非常昂贵,并且不需要哈希值良好的哈希码。但是,这超出了此答案的范围。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用 locate 的功能来更快地找到符号链接吗?

CDN可以更快地加载资源吗?

Python可以更快地替代字典吗?

我可以更快地制作这个宏/代码吗?(Excel VBA 重复查找器)

我可以在不使用文件缓存的情况下更快地复制大文件吗?

需要强制选择索引才能更快地工作吗?

如何更快地找到两个多维数组的交集?

如何使我的代码更快地找到最小值?

我可以更快地将我的1D向量转换为2D向量吗?

可以用numpy更快地完成吗?

Python可以更快地获取网站截图吗?

BeautifulSoup需要永远,这可以更快地完成吗?

用C可以更快地计算RMS值吗?

可以更快地执行更复杂的循环吗?

启用优化后,代码可以更快地运行一个数量级。我想念什么吗?

我的静态方法似乎可以通过重用更快地执行。为什么?它会被缓存吗?

是否可以更快地查询?

如何更快地渲染数组?

循环获取熊猫时间索引数据帧的滚动未来值,我可以使其更快吗?

我可以使用集合类型作为数组索引吗?

我可以覆盖`。<digit>`来指向数组的索引吗?

我可以在WebGL的GLSL中用作数组索引吗?

我可以在SELECT语句中索引到数组文字吗?

我可以从元素内部获取元素的索引吗?数组

如何让我拥有的团队跑步者更快地找到工作?

如何更快地对列表进行索引?

如果我使用byte而不是int,我的循环会更快地迭代吗?

计算机可以比实时回放更快地分析音频吗?

有什么方法可以使图像压缩和在Android上更快地保存吗?