REXX中length()函数的处理开销如何随字符串的长度而变化?
更新:我正在使用:
答案 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)
这是特定于语言的实现。自从我现在编写任何REXX以来已经很长时间了,实际上我写了AREXX(Amiga实现)并且它是在15年前。 : - )
您可以编写自己的测试例程。生成长度增加的字符串,并使用高性能计时器测量获取length()所需的时间。如果将时间和字符串长度存储在基于逗号分隔的表的文本文件中,则可以使用gnuplot绘制它。然后你会非常清楚地看到它是如何扩展的。
编辑:我应该先检查一下Rolf的答案,因为他或多或少写了同样的东西。 : - )
答案 4 :(得分:1)
我可以代表IBM Mainframe版本,OS / 2的Classic Rexx版本以及任何Object Rexx实现。长度存储在字符串描述符中,因此开销与字符串长度无关。