R中是否有轮班操作? C++中有移位操作< /p> >> right shift << left shift >右移
您可以使用R中是否有轮班操作? C++中有移位操作< /p> >> right shift << left shift >右移,r,R,您可以使用bitwShiftL和bitwShiftR: bitwShiftL(16, 2) #[1] 64 bitwShiftR(16, 2) #[1] 4 这是你的电话号码。从这些函数中额外的代码量以及*和/是原语这一事实来看,它们不太可能比除以/乘以二的等效幂快。在我的一个虚拟机上 microbenchmark::microbenchmark( bitwShiftL(16, 2), 16 * 4, times = 1000L ) #Unit: nanosecond
bitwShiftL
和bitwShiftR
:
bitwShiftL(16, 2)
#[1] 64
bitwShiftR(16, 2)
#[1] 4
这是你的电话号码。从这些函数中额外的代码量以及*
和/
是原语这一事实来看,它们不太可能比除以/乘以二的等效幂快。在我的一个虚拟机上
microbenchmark::microbenchmark(
bitwShiftL(16, 2),
16 * 4,
times = 1000L
)
#Unit: nanoseconds
# expr min lq mean median uq max neval cld
# bitwShiftL(16, 2) 1167 1353.5 2336.779 1604 2067 117880 1000 b
# 16 * 4 210 251.0 564.528 347 470 51885 1000 a
microbenchmark::microbenchmark(
bitwShiftR(16, 2),
16 / 4,
times = 1000L
)
# Unit: nanoseconds
# expr min lq mean median uq max neval cld
# bitwShiftR(16, 2) 1161 1238.5 1635.131 1388.5 1688.5 39225 1000 b
# 16/4 210 240.0 323.787 280.0 334.0 14284 1000 a
我还应该指出,尝试微优化解释语言可能是浪费时间。如果性能是如此大的关注,你愿意在几小时的时钟周期内劈头发,首先就用C或C++编写程序。p> 一个更具建设性的评论:
??
确实很有帮助。如果键入??“移位”
或??“按位”
在R控制台中,您可以快速进入R的按位运算符(包括移位运算符)的帮助页面。