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

时间:2008-12-15 10:41:20

标签: complexity-theory overhead rexx

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


更新:我正在使用:

  • uni-REXX(R)Version 297t
  • 开REXX (TM)版权所有(C)iX Corporation 1989-2002。保留所有权利。

5 个答案:

答案 0 :(得分:3)

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

IBM的REXX语言规范中没有任何内容规定如何在封面下实现该功能,如果扫描字符串,则可能是O(N),如果长度与字符串存储在某处,则可能是O(1)。 / p>

如果非常重要,最好使用基准测试代码进行测试,看看长度是否有所不同。

答案 1 :(得分:3)

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

Neil Milsted uni-REXX的作者(不开玩笑)。

答案 2 :(得分:2)

我不确定。我在我的日子里写了一些Rexx但是我从未遇到过使用length()函数的性能问题。这种扩展的方式可能甚至取决于你的Rexx解析器的实现。

我会编写一个Rexx脚本,在10个字符的sting上调用10.000个“length()”调用,然后在100个字符的字符串上调用,然后调用1000个字符的字符串。

在图表中绘制结果时间将为您提供性能下降的近似值。

说完这一切之后,我的猜测是性能下降至多是线性的,如O(n)。 (见http://en.wikipedia.org/wiki/Big_O_notation

答案 3 :(得分:1)

我可以代表IBM Mainframe版本,OS / 2的Classic Rexx版本以及任何Object Rexx实现。长度存储在字符串描述符中,因此开销与字符串长度无关。

答案 4 :(得分:1)

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

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

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