gpt4 book ai didi

algorithm - 以不寻常但有效的方式做某事

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:36:47 32 4
gpt4 key购买 nike

我今天看了一个视频,视频里的人只是写下这个来理解一个数字是否是偶数:

number/2*2 == number ? true : false ; 

回家后我试了一下,和

number % 2 == 0 ? true : false ; 

第二个比第一个快,我把第一个改成了:

number>>1<<1 == number ? true : false; 

这次将数字向右移动一次,向左移动一次效果更快:D识别所有数字的性能差异并不大,仅 0-1 秒在 1 到 1000000000 之间,但我非常喜欢它,想听听你的这些技巧。

那还有什么? =)

还有 Russell Borogove 的另一个想法 =)

(number&1) == 0;

结果:

And 操作耗时:00:00:07.0504033
移位操作耗时:00:00:06.4653698
Mod 操作耗时:00:00:06.8323908

令人惊讶的是,在我的计算机上移动两次比一次和操作更快。

最佳答案

麻省理工学院实际上保留了一份这样的 list ,HAKMEM,可以在 http://www.inwap.com/pdp10/hbaker/hakmem/hakmem.html 找到。 .大多数与编程相关的都是用汇编语言编写的,但我了解到其中一些已在 http://graphics.stanford.edu/~seander/bithacks.html 被翻译成 C。 .

现在开始讲课:这些肮脏的技巧可能会更快,但要花太长时间才能理解。

大多数计算对性能的要求并不高,以至于需要像这样的技巧。在奇偶情况下,number % 2 == 0number/2*2 == number 更清晰易读或 number>>1<<1 == number .也就是说,在普通应用程序中,您应该始终使用更简单和更标准的选项,因为这将使您的代码更易于理解和维护。

但是,也有像这样的技巧的用例。特别是在大规模数学或科学计算和计算机图形学中,像这样的技巧可以挽救你的生命。一个很好的例子是 John Carmack's "magic inverse square root"在 Quake 3 中。

关于algorithm - 以不寻常但有效的方式做某事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110980/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com