Question

Comment les frais généraux de traitement de la fonction longueur () dans le changement REXX avec la longueur de la chaîne?


Mise à jour: J'utilise:

  • uni-REXX (R) Version 297t
  • Ouvrir-REXX (TM) Copyright (C) iX Corporation 1989-2002. Tous droits réservés.
Était-ce utile?

La solution

Le produit de tête est égal à 0. La longueur est stocké dans un descripteur.

Neil Milsted Auteur de uni-REXX (je ne plaisante pas).

Autres conseils

Il dépend entièrement de la mise en œuvre. Voulez-vous dire REXX pour OS / 2, REXX pour z / VM, REXX pour z / OS, OOREXX pour Windows, REXX / 400 ou Regina?

Rien dans les spécifications du langage REXX sur IBM dicter la façon dont la fonction est mise en œuvre sous les couvertures, il pourrait être O (N) si vous analysez la chaîne ou O (1) si la longueur est enregistrée avec la chaîne quelque part.

S'il est vraiment important, mieux pour tester avec le code d'étalonnage pour voir si la longueur fait une différence.

Je ne suis pas sûr. Je l'ai écrit quelques Rexx dans mes jours, mais je ne l'ai jamais eu du mal de performance avec la fonction de la longueur (). La façon dont cette Scales est probablement même en fonction de votre mise en œuvre de l'analyseur Rexx.

J'écrire un script qui Rexx fois 10.000 appels de « longueur () » sur une piqûre de 10 caractères, puis sur une chaîne 100 caractères, puis sur une chaîne de caractères 1000.

Traçage les temps résultant dans un graphique vous donnera une approximation sur la façon dont la performance diminue.

Après avoir dit tout cela, je suppose que la diminution de la performance est au plus linéaire, comme dans O (n). (Voir http://en.wikipedia.org/wiki/Big_O_notation )

spécifique de la mise en œuvre de la langue. Ce fut longtemps que je l'ai écrit tout REXX maintenant, en fait, je l'ai écrit AREXX (la mise en œuvre Amiga) et il y a 15 ans. : -)

Vous pouvez écrire votre propre routine de test. Générer des chaînes de plus en plus longues et mesurer le temps qu'il faut pour obtenir la longueur () à l'aide d'une minuterie haute performance. Si vous stockez les temps et la longueur des chaînes dans une table séparées par des virgules à base de fichiers de texte que vous pouvez tracer à l'aide gnuplot . Et puis vous verrez très clairement comment les échelles.

Edit: J'ai vérifié la réponse de Rolf première depuis qu'il a écrit plus ou moins la même chose. : -)

Je peux parler pour les versions mainframes IBM, la version classique Rexx pour OS / 2, et l'un des objets implémentations Rexx. La longueur est stocké dans le descripteur de chaîne, de sorte que la tête est indépendante de la longueur de la chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top