【发布时间】:2010-11-05 23:34:13
【问题描述】:
我今天看了一个视频,视频中的那个人只是写这个来了解一个数字是否是偶数:
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;
结果:
运行时间:00:00:07.0504033
班次操作经过的时间:00:00:06.4653698
模组操作经过的时间:00:00:06.8323908
令人惊讶的是,两次切换比在我的电脑上操作一次更快。
【问题讨论】:
-
even = (number&1) == 0有什么问题?
标签: algorithm performance language-agnostic bit-manipulation