Каковы накладные расходы на обработку функции length() в REXX?

StackOverflow https://stackoverflow.com/questions/367986

Вопрос

Как накладные расходы на обработку функции length() в REXX изменяются в зависимости от длины строки?


Обновить:Я использую:

  • uni-REXX (R) Версия 297t
  • Open-REXX (TM) Корпорация авторских прав (C) iX 1989-2002.Все права защищены.
Это было полезно?

Решение

Накладные расходы равны 0.Длина хранится в дескрипторе.

Нил Милстед Автор книги uni-REXX (без шуток).

Другие советы

Это полностью зависит от реализации.Вы имеете в виду REXX для OS / 2, REXX для z / VM, REXX для z / OS, OOREXX для Windows, REXX / 400 или Regina?

Ничто в спецификациях языка REXX от IBM не диктует, как функция реализована под обложками, это может быть O (N), если вы сканируете строку, или O (1), если длина где-то хранится вместе со строкой.

Если это в самом деле важно, лучше всего протестировать с помощью бенчмаркингового кода, чтобы увидеть, имеет ли значение длина.

Я не уверен.В свое время я написал несколько Rexx, но у меня никогда не было проблем с производительностью функции length().То, как это масштабируется, вероятно, даже зависит от вашей реализации синтаксического анализатора Rexx.

Я бы написал скрипт Rexx, который умножает 10.000 вызовов "length()" на 10-символьный sting, затем на 100-символьную строку, а затем на 1000-символьную строку.

Отображение результирующего времени на графике даст вам приблизительное представление о том, как снижается производительность.

Сказав все это, я предполагаю, что снижение производительности происходит не более чем линейно, как в O (n).(См . http://en.wikipedia.org/wiki/Big_O_notation)

Это зависит от языковой реализации.Прошло много времени с тех пор, как я писал REXX, на самом деле я написал AREXX (реализацию Amiga), и это было 15 лет назад.:-)

Вы можете написать свою собственную процедуру тестирования.Генерируйте строки увеличивающейся длины и измеряйте время, необходимое для получения length(), используя высокопроизводительный таймер.Если вы сохраняете время и длину строки в таблице на основе текстового файла, разделенной запятыми, вы можете затем отобразить ее с помощью gnuplot ( схема ).И тогда вы очень ясно увидите, как он масштабируется.

Редактировать:Мне следовало сначала проверить ответ Рольфа, поскольку он написал более или менее то же самое.:-)

Я могу говорить за версии мэйнфреймов IBM, классическую версию Rexx для OS / 2 и любую из реализаций Object Rexx.Длина хранится в строковом дескрипторе, поэтому накладные расходы не зависят от длины строки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top