More profiling:
1) 取负号比作减法慢
<br />
> system.time(for(i in 1:1e7)1)<br />
user system elapsed<br />
0.91 0.04 0.95<br />
> system.time(for(i in 1:1e7)-1)<br />
user system elapsed<br />
3.73 0.04 3.79<br />
> system.time(for(i in 1:1e7)-1+1)<br />
user system elapsed<br />
7.31 0.01 7.41<br />
> system.time(for(i in 1:1e7)1-1)<br />
user system elapsed<br />
4.26 0.02 4.32<br />
2) 加减乘除几乎一样速度
<br />
> system.time(for(i in 1:1e7)1.5*3.07)<br />
user system elapsed<br />
4.23 0.05 4.31<br />
> system.time(for(i in 1:1e7)1.5+3.07)<br />
user system elapsed<br />
4.27 0.02 4.32<br />
> system.time(for(i in 1:1e7)1.5/3.07)<br />
user system elapsed<br />
4.26 0.01 4.30<br />
> system.time(for(i in 1:1e7)1.5-3.07)<br />
user system elapsed<br />
4.20 0.03 4.26<br />
> system.time(for(i in 1:1e7)3.07-1.5)<br />
user system elapsed<br />
4.21 0.02 4.26<br />
3) 一次赋值运算耗时差不多是一次乘法运算耗时的一半
<br />
> system.time(for(i in 1:1e7)3.1*5.3)<br />
user system elapsed<br />
4.48 0.03 4.54<br />
> system.time(for(i in 1:1e7)x<-3.1*5.3)<br />
user system elapsed<br />
6.29 0.00 6.31<br />
> 6.29/4.48<br />
[1] 1.404018<br />
4)赋值函数x<-耗时相当于纯粹memory allocation耗时的3倍
<br />
> system.time(for(i in 1:1e7)x<-1.5)<br />
user system elapsed<br />
2.48 0.01 2.51<br />
> system.time(for(i in 1:1e7)1.5)<br />
user system elapsed<br />
0.87 0.03 0.93<br />
> 2.48/0.81<br />
[1] 3.061728<br />
</p>