c# - 通过打开整数的位来枚举的最快方法

标签 c# performance optimization bit-manipulation

枚举整数并返回打开的每个位的指数的最快方法是什么?看过一个使用 << 的例子和另一个使用 Math.Pow 的例子。想知道是否还有其他任何东西真的很快。

谢谢。

最佳答案

最快方式?查找表几乎总是最快的方法。构建一个包含 40 亿个条目的 int[][] 数组,每个条目对应一个 int,包含一个包含所需数字的数组。当然,初始化表格需要一些时间,但查找速度会非常快。

我注意到您还没有足够准确地说明“最快”的含义,让任何人都能真正回答这个问题。这是否意味着包括启动时间在内的最快摊销时间,或者假设可以忽略启动成本的边际查找时间?我的解决方案草图采用了后者。

显然,具有 20 亿字节地址空间的 32 位机器将没有足够的地址空间来存储 300 亿字节的数组。给自己一台 64 位机器。如果您希望速度快,则至少还需要安装那么多的物理内存——否则分页会要了您的命。

我当然希望您在每次查找时节省的几纳秒值得购买所有额外的硬件。或者您实际上不想要最快的方式?

:-)

关于c# - 通过打开整数的位来枚举的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/838097/

相关文章:

c# - 无法解析操作路由

performance - Elasticsearch 索引速度慢

python - Python 中 "How to find the maximum area of a rectangle given its perimeter"的变体

c++ - 在多核环境中选择 v/s 多线程

python - 在 Python 中加快字符串与对象的配对

optimization - Lua挑战: Can you improve the fannkuch implementation's performance?

MySQL优化——防止子查询

c# - 通过网络共享的 SQL CE

c# - 禁用特定的C#9源生成器

c# - 如何根据角色加载不同的 _layout.cshtml?