首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >assign语句在progress 4GL中的效率如何

assign语句在progress 4GL中的效率如何
EN

Stack Overflow用户
提问于 2013-06-14 20:59:08
回答 3查看 2K关注 0票数 4

为什么assign语句比不使用assign语句更有效?

同事说:

代码语言:javascript
复制
assign
  a=3
  v=7
  w=8.

效率比:

代码语言:javascript
复制
a=3.
v=7.
w=8.

为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-14 22:21:31

你可以自己测试一下然后看看...但是,是的,它的效率略高一些。或者这是我最后一次测试它。原因是编译器将语句组合在一起,生成的r-code稍微小了一点。

但效率几乎总是这样做的一个糟糕的理由。与避免磁盘IO或选择更有效的算法相比,这里和那里节省一微秒就相形见绌了。充分的理由:

  1. 回到黑暗时代,每个程序的r-code的限制是63k。将语句与赋值相结合是减少r-code大小并保持在该限制之下的一种方法(好吧,这可能不是一个“好”的理由)。另一种有用的方式是,你也可以避免做……结束对并进一步减小r代码大小。

  1. 在创建或更新记录时,作为索引一部分的字段将在分配时(而不是在事务结束时)写回数据库--将所有分配分组到单个语句中有助于避免不一致的脏读取。将索引字段分组到单个赋值中可以避免多次写入索引项。(这可能是使用赋值的最好理由。)

  1. 可读性--您可以争辩说,对连续的作业进行分组可以更清楚地显示您的意图,因此更具可读性。(我喜欢这个原因,但不是每个人都同意。)
票数 7
EN

Stack Overflow用户

发布于 2013-06-18 14:50:37

基本上是在做:

代码语言:javascript
复制
a=3.
v=7.
w=8.

与以下内容相同:

代码语言:javascript
复制
assign a=3.
assign v=7.
assign w=8.

这是3个独立的语句,所以更多一点开销。因此效率较低。

无论是否有一个或多个变量被赋值,Progress都会作为一条语句进行赋值。如果你没有说赋值,那么假设你会做3条语句,而不是1条。当使用一条赋值语句时,R代码减少了20% - 40%,性能提高了15% - 20%。为什么这是只能推测,因为我找不到任何来源的信息,这是为什么。对于数据库字段,尤其是键/索引字段,它是非常有意义的。对于变量,我只能假设它与进度如何管理其缓冲区以及将数据复制到缓冲区或从缓冲区复制数据有关。

票数 1
EN

Stack Overflow用户

发布于 2013-06-14 21:09:21

ASSIGN会将多条语句合并为一条语句。如果a,v和w是你的数据库中的字段,那就意味着它会做类似INSERT INTO (a,v,w)的事情……

而不是插入到(A)中。插入(v)

等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17109045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档