2008-12-15 36 views

回答

3

開銷爲0.長度存儲在描述符中。

尼爾Milsted 作者單REXX(不開玩笑)的。

2

我不知道。我在我的日子裏寫了一些Rexx,但是我從來沒有在length()函數中遇到過性能問題。這種擴展的方式甚至可能取決於你對Rexx解析器的實現。

我會寫一個劇本的Rexx上10個字符的刺痛倍10.000電話「長度()」中,然後在100個字符的字符串,然後在1000字符串。

在圖形中繪製結果時間會給出性能下降的近似值。

說了這麼多,我的猜測是性能下降最多爲線性的,在O(N)。 (見http://en.wikipedia.org/wiki/Big_O_notation

3

這完全取決於實施。你的意思是OS/2的REXX,z/VM的REXX,z/OS的REXX,Windows的OOREXX,REXX/400還是Regina?

IBM的REXX語言規範沒有規定如何在封面下實現該功能,如果您掃描字符串,可能是O(N),或者如果長度存儲在字符串的某處,則可能是O(1)。

如果是確實重要,最好用基準代碼進行測試,看看長度是否有差別。

1

它是語言實現特定的。我寫了任何REXX已經很長時間了,實際上我寫了AREXX(Amiga實現),並且是15年前。 :-)

你可以編寫自己的測試程序。生成長度增加的字符串並測量使用高性能計時器獲取長度()的時間。如果您將時間和字符串長度存儲在基於逗號分隔的表格的文本文件中,則可以使用gnuplot對其進行繪製。然後你會非常清楚地看到它是如何擴展的。

編輯:我應該先檢查Rolf的答案,因爲他寫了更多或更少的相同的東西。 :-)

1

我可以爲IBM大型機的版本說,經典的Rexx版本的OS/2,任何對象的Rexx實現。長度存儲在字符串描述符中,所以開銷與字符串長度無關。

相關問題