Pregunta

¿Cómo funciona la carga de procesamiento de la función de la longitud () en el cambio de REXX con la longitud de la cuerda?


Actualización: Estoy usando:

  • uni-REXX (R) Versión 297t
  • Open-REXX (TM) Copyright (C) iX Corporación 1989-2002. Todos los derechos reservados.
¿Fue útil?

Solución

La sobrecarga es 0. La longitud se almacena en un descriptor.

Neil Milsted Autor de uni-REXX (no es broma).

Otros consejos

Todo depende de la implementación. ¿Se refiere a REXX para OS / 2, REXX para z / VM, REXX para z / OS, ooRexx para Windows, REXX / 400 o Regina?

No hay nada en las especificaciones del lenguaje REXX de IBM dictan cómo la función se lleva a cabo bajo las mantas, que podría ser O (N) si escanea la cadena o O (1) si la longitud se almacena con la cadena en alguna parte.

Si se trata de realmente importante, mejor probar con el código de evaluación comparativa para ver si la longitud hace la diferencia.

No estoy seguro. He escrito algunas Rexx en mis días, pero nunca he tenido problemas de rendimiento con la función de longitud (). La forma en que esto escalas es probable que incluso dependiendo de la implementación del programa de análisis REXX.

Me gustaría escribir un script REXX que los tiempos de 10.000 llamadas de "longitud ()" en una picadura de 10 caracteres, a continuación, en una cadena de 100 caracteres, y luego en una cadena de 1.000 caracteres.

Trazado de las veces resulta en un gráfico le daría una aproximación de cómo disminuye el rendimiento.

Una vez dicho todo esto, mi opinión es que el rendimiento disminución es lineal a lo sumo, como en O (n). (Ver http://en.wikipedia.org/wiki/Big_O_notation )

Es de aplicación específico del lenguaje. Fue mucho tiempo que no escribía ningún REXX ahora, de hecho escribí AREXX (la implementación Amiga) y fue hace 15 años. : -)

Usted puede escribir su propia rutina de prueba. Generar cadenas de longitud creciente y medir el tiempo que tarda en llegar longitud () usando un temporizador de alto rendimiento. Si almacena los tiempos y las longitudes de cadena en una tabla separada por comas basado en archivos de texto a continuación, puede trazar usando gnuplot . Y entonces verás claramente cómo se escala.

Editar: debería haber revisado la respuesta de Rolf primera desde que escribió más o menos lo mismo. : -)

Yo puedo hablar de las versiones de mainframe de IBM, la versión de REXX estándar para OS / 2, y cualquiera de los objetos implementaciones REXX. La longitud se almacena en el descriptor de cadena, por lo que la sobrecarga es independiente de la longitud de cadena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top