Domanda

Come funziona l'overhead di elaborazione della funzione di lunghezza () nel cambiamento REXX con la lunghezza della stringa?


Aggiornamento: sto usando:

  • UNI-REXX (R) Versione 297t
  • Apri-REXX (TM) Copyright (C) iX Corporation 1989-2002. Tutti i diritti riservati.
È stato utile?

Soluzione

L'overhead è 0. La lunghezza è memorizzato in un descrittore.

Neil Milsted Autore di UNI-REXX (non scherzo).

Altri suggerimenti

Dipende interamente l'attuazione. Vuoi dire REXX per OS / 2, REXX per z / VM, REXX per z / OS, OOREXX per Windows, REXX / 400 o Regina?

Nessuna disposizione le specifiche linguaggio REXX di IBM dettare come la funzione è implementata sotto le coperte, potrebbe essere O (N) se si esegue la scansione della stringa o O (1) se la lunghezza è memorizzato con la stringa da qualche parte.

Se è davvero importante, meglio provare con il codice di benchmarking per vedere se la lunghezza fa la differenza.

Non sono sicuro. Ho scritto alcune Rexx nei miei giorni, ma non ho mai avuto problemi prestazioni con la funzione di lunghezza (). Il modo in cui questo viene scale probabilmente anche a seconda dell'implementazione del parser Rexx.

mi piacerebbe scrivere uno script Rexx che i tempi di 10.000 chiamate di "lunghezza ()" a una puntura di 10 caratteri, quindi su una stringa di 100 caratteri, e poi su una stringa di 1000 caratteri.

Tracciare i tempi risultanti in un grafico darebbe un'approssimazione di come le prestazioni diminuisce.

Detto tutto questo, la mia ipotesi è che la riduzione delle prestazioni è al più lineare, come in O (n). (Vedere http://en.wikipedia.org/wiki/Big_O_notation )

E 'di implementazione del linguaggio specifico. E 'stato molto tempo da quando ho scritto qualsiasi REXX oggi, infatti ho scritto AREXX (l'attuazione Amiga) ed è stato 15 anni fa. : -)

È possibile scrivere una propria routine di test. Generare stringhe di lunghezza crescente e misurare il tempo necessario per ottenere la lunghezza () utilizzando un timer ad alte prestazioni. Se si memorizzano i tempi e le lunghezze di stringa in una tabella virgole basato file di testo separato è quindi possibile tracciare utilizzando gnuplot . E poi vedrete molto chiaramente come scale.

Edit: ho dovuto controllare la risposta di Rolf primo dato che ha scritto più o meno la stessa cosa. : -)

posso parlare per le versioni mainframe IBM, la versione Classic Rexx per OS / 2, e una qualsiasi delle Object Rexx implementazioni. La lunghezza è memorizzato nel descrittore stringa, quindi l'overhead è indipendente dalla lunghezza della stringa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top