Qt 不再直接使用 RDRAND/RDSEED,以提高性能并减少错误

Qt 工具包正在逐步放弃直接依赖 CPU 的 RDRAND 和 RDSEED 指令生成随机数,转而使用操作系统提供的熵。

在合并至 Qt 6.11 开发分支并标记为回溯移植至 Qt 6.5/6.8/6.10 分支的提交中,已移除QRandomGenerator对硬件指令的直接调用。此前,AMD Zen 5 架构受到 RDSEED 指令的影响,目前已通过更新的微代码解决了该问题。此外,与依赖操作系统提供的熵相比,RDSEED/RDRAND 指令的性能优势并不明显。

Qt 不再直接使用 RDRAND/RDSEED,以提高性能并减少错误

此次合并的提交即终止了 QRandomGenerator 对硬件指令的直接调用:

“QRandomGenerator:移除对硬件指令的直接调用

硬件随机数生成器(HWRNG)指令未必比操作系统提供的方案更快。此外,操作系统能够从 CPU 之外的其他来源收集熵。更重要的是,这避免了 Qt 处理故障的 HWRNG,从而将问题转嫁给操作系统(操作系统可能会禁用 CPUID 位,导致应用程序加载失败)。

[更新日志][QtCore][QRandomGenerator] 该类在x86系统上不再直接使用硬件随机数生成器(即使存在可用硬件)。取而代之的是始终采用操作系统提供的生成器(因此性能表现取决于操作系统),但生成的样本质量不应存在实质差异。”

现在 Qt 采用了更稳健的方式,即依赖操作系统。

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/zixun/63030.html

(0)

相关推荐

发表回复

登录后才能评论