REXX中length()的处理开销是多少?

问题描述:

REXX中length()函数的处理开销如何随着字符串的长度而变化?REXX中length()的处理开销是多少?


更新:我使用的是:

  • 单REXX(R)版本297吨
  • 开REXX (TM)版权所有(C)九公司 1989-2002。版权所有。

开销为0.长度存储在描述符中。

尼尔Milsted 作者单REXX(不开玩笑)的。

我不知道。我在我的日子里写了一些Rexx,但是我从来没有在length()函数中遇到过性能问题。这种扩展的方式甚至可能取决于你对Rexx解析器的实现。

我会写一个剧本的Rexx上10个字符的刺痛倍10.000电话“长度()”中,然后在100个字符的字符串,然后在1000字符串。

在图形中绘制结果时间会给出性能下降的近似值。

说了这么多,我的猜测是性能下降最多为线性的,在O(N)。 (见http://en.wikipedia.org/wiki/Big_O_notation

这完全取决于实施。你的意思是OS/2的REXX,z/VM的REXX,z/OS的REXX,Windows的OOREXX,REXX/400还是Regina?

IBM的REXX语言规范没有规定如何在封面下实现该功能,如果您扫描字符串,可能是O(N),或者如果长度存储在字符串的某处,则可能是O(1)。

如果是确实重要,最好用基准代码进行测试,看看长度是否有差别。

它是语言实现特定的。我写了任何REXX已经很长时间了,实际上我写了AREXX(Amiga实现),并且是15年前。 :-)

你可以编写自己的测试程序。生成长度增加的字符串并测量使用高性能计时器获取长度()的时间。如果您将时间和字符串长度存储在基于逗号分隔的表格的文本文件中,则可以使用gnuplot对其进行绘制。然后你会非常清楚地看到它是如何扩展的。

编辑:我应该先检查Rolf的答案,因为他写了更多或更少的相同的东西。 :-)

我可以为IBM大型机的版本说,经典的Rexx版本的OS/2,任何对象的Rexx实现。长度存储在字符串描述符中,所以开销与字符串长度无关。