为什么assign语句比不使用assign语句更有效?
同事说:
assign
a=3
v=7
w=8.效率比:
a=3.
v=7.
w=8.为什么?
发布于 2013-06-14 22:21:31
你可以自己测试一下然后看看...但是,是的,它的效率略高一些。或者这是我最后一次测试它。原因是编译器将语句组合在一起,生成的r-code稍微小了一点。
但效率几乎总是这样做的一个糟糕的理由。与避免磁盘IO或选择更有效的算法相比,这里和那里节省一微秒就相形见绌了。充分的理由:
发布于 2013-06-18 14:50:37
基本上是在做:
a=3.
v=7.
w=8.与以下内容相同:
assign a=3.
assign v=7.
assign w=8.这是3个独立的语句,所以更多一点开销。因此效率较低。
无论是否有一个或多个变量被赋值,Progress都会作为一条语句进行赋值。如果你没有说赋值,那么假设你会做3条语句,而不是1条。当使用一条赋值语句时,R代码减少了20% - 40%,性能提高了15% - 20%。为什么这是只能推测,因为我找不到任何来源的信息,这是为什么。对于数据库字段,尤其是键/索引字段,它是非常有意义的。对于变量,我只能假设它与进度如何管理其缓冲区以及将数据复制到缓冲区或从缓冲区复制数据有关。
发布于 2013-06-14 21:09:21
ASSIGN会将多条语句合并为一条语句。如果a,v和w是你的数据库中的字段,那就意味着它会做类似INSERT INTO (a,v,w)的事情……
而不是插入到(A)中。插入(v)
等。
https://stackoverflow.com/questions/17109045
复制相似问题