【问题标题】:What is the processing overhead of length() in REXX?REXX 中 length() 的处理开销是多少?
【发布时间】:2010-09-26 22:45:36
【问题描述】:

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


更新:我正在使用:

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

【问题讨论】:

    标签: complexity-theory overhead rexx


    【解决方案1】:

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

    尼尔·米尔斯特德 uni-REXX 的作者(不开玩笑)。

    【讨论】:

      【解决方案2】:

      这完全取决于实现。您是指 OS/2 的 REXX、z/VM 的 REXX、z/OS 的 REXX、Windows 的 OOREXX、REXX/400 还是 Regina?

      IBM 的 REXX 语言规范中没有规定函数是如何在幕后实现的,如果您扫描字符串,则可能是 O(N),如果长度与字符串一起存储在某处,则可能是 O(1)。

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

      【讨论】:

        【解决方案3】:

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

        我会编写一个 Rexx 脚本,对 10 个字符的字符串、100 个字符的字符串和 1000 个字符的字符串调用 10.000 次“length()”调用。

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

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

        【讨论】:

          【解决方案4】:

          它是特定于语言实现的。我现在已经很久没有写任何 REXX 了,事实上我写了 AREXX(Amiga 实现),那是 15 年前的事了。 :-)

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

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 2011-08-07
              • 1970-01-01
              • 2021-07-26
              • 1970-01-01
              • 2011-05-17
              • 1970-01-01
              • 2011-11-23
              • 2017-09-27
              • 1970-01-01
              相关资源
              最近更新 更多