为什么assign语句比不使用assign更有效?
同事说:assign
a=3
v=7
w=8.
比以下更有效:
a=3.
v=7.
w=8.
为什么?
答案 0 :(得分:3)
你总是可以自己测试并看到......但是,是的,它稍微有点效率。或者这是我最后一次测试它。原因是编译器组合了语句,结果r代码有点小。
但效率几乎总是不太合理的理由。在这里和那里保存一秒钟就可以避免磁盘IO或选择更有效的算法。好理由:
0)回到黑暗时代,每个程序的r代码限制为63k。这是一种减少r代码大小并保持在该限制之下的方法(好吧,这可能不是一个“好”的原因)。另一种方法是,您可以经常避免使用DO ... END对并进一步减少r代码大小。
1)创建记录时,作为索引一部分的字段将在分配时(而不是在事务结束时)写回数据库 - 将所有分配分组到单个语句中有助于避免不一致脏读。 (这可能是仍然这样做的最好理由。)
2)可读性 - 您可以认为对连续分配进行分组可以更清楚地显示您的意图,因此更具可读性。 (我喜欢这个原因,但不是每个人都同意。)
答案 1 :(得分:0)
ASSIGN将多个语句合并为一个。如果a,v和w是数据库中的字段,这意味着它将执行类似INSERT INTO(a,v,w)的操作......
而不是 插入(a)...... INSERT INTO(v)等
答案 2 :(得分:0)
基本上做了:
α= 3。
V = 7。
W = 8。
与:
相同指定a = 3。
指定v = 7。
指定w = 8。
这是3个单独的语句,因此需要更多开销。因此效率较低。