Frage

Wie funktioniert der Verarbeitungsaufwand der Länge () Funktion in REXX ändert sich mit der Länge der Zeichenfolge?


Update: Ich bin mit:

  • uni-REXX (R) Version 297t
  • Öffnen-REXX (TM) Copyright (C) iX Corporation, 1989-2002. Alle Rechte vorbehalten.
War es hilfreich?

Lösung

Der Aufwand ist 0. Die Länge in einem Deskriptor gespeichert wird.

Neil Milsted Autor von uni-REXX (kein Scherz).

Andere Tipps

Es hängt ganz von der Umsetzung. Meinen Sie damit REXX für OS / 2, REXX für z / VM, REXX für z / OS, OOREXX für Windows, REXX / 400 oder Regina?

Nichts in den REXX Sprache Daten aus IBM diktieren, wie die Funktion unter der Decke umgesetzt werden, könnte es O (N), wenn Sie die Zeichenfolge oder O-Scan (1), wenn die Länge der Zeichenfolge irgendwo gespeichert wird.

Wenn es wirklich wichtig, am besten mit Benchmarking-Code zu testen, um zu sehen, ob die Länge der einen Unterschied macht.

Ich bin mir nicht sicher. Ich habe einige Rexx in meinen Tagen geschrieben, aber ich habe noch nie Performance Probleme mit der Länge () Funktion. Die Art und Weise diese skaliert wird wahrscheinlich auch in Abhängigkeit von der jeweiligen Implementierung des Rexx-Parser.

Ich habe gerne einen Rexx-Skript schreiben, dass mal 10.000 Anrufe von „length ()“ auf einem 10-Zeichen-Stachel, dann auf einer 100 Zeichenkette, und dann auf einer 1000-Zeichenfolge.

Trägt man die resultierenden Zeiten in einem Diagramm würden Sie eine Annäherung an, wie die Leistung abnimmt.

all dies gesagt ist, meine Vermutung ist, dass Leistungsabfall höchstens linear ist, wie in O (n). (Siehe http://en.wikipedia.org/wiki/Big_O_notation )

Es ist die Sprache der Implementierung abhängig. Es war eine lange Zeit, da ich jede REXX jetzt schrieb, in der Tat schrieb ich AREXX (die Amiga-Implementierung), und es war vor 15 Jahren. : -)

Sie können Ihre eigene Testroutine schreiben. Generieren Sie Strings mit zunehmender Länge und messen die Zeit, die Länge zu erhalten () einen Hochleistungs-Timer. Wenn Sie die Zeiten speichern und Stringlängen in einer Textdatei auf Basis Komma getrennt Tabelle können Sie dann plotten mit gnuplot . Und dann werden Sie sehr gut sehen, wie es skaliert werden kann.

Edit: Ich sollte zuerst Antwort Rolfs geprüft, seit er mehr oder weniger das gleiche geschrieben haben. : -)

Ich kann für die IBM Mainframe-Versionen sprechen, die Classic Rexx Version für OS / 2 und einen der Object Rexx-Implementierungen. Die Länge wird in dem Zeichenkettenbezeich gespeichert, so dass der Overhead ist unabhängig von der Saitenlänge.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top