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

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


Обновление: я использую:

  • uni-REXX (R) Версия 297t
  • Open-REXX (TM) Copyright (C) iX Corporation 1989-2002. Все права защищены.

person brabster    schedule 15.12.2008    source источник


Ответы (5)


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

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

person Community    schedule 28.01.2009

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

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

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

person paxdiablo    schedule 15.12.2008

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

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

Нанесение полученных результатов на график даст вам приблизительное представление о том, как снижается производительность.

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

person Rolf    schedule 15.12.2008

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

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

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

person Community    schedule 15.12.2008

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

person Community    schedule 27.09.2009