سؤال

كيف يتغير عبء المعالجة لوظيفة length() في REXX مع طول السلسلة؟


تحديث:أنا استخدم:

  • يوني-REXX (R) الإصدار 297t
  • Open-Rexx (TM) حقوق الطبع والنشر (C) IX Corporation 1989-2002.كل الحقوق محفوظة.
هل كانت مفيدة؟

المحلول

النفقات العامة هي 0.يتم تخزين الطول في واصف.

نيل ميلستيد مؤلف uni-rexx (لا تمزح).

نصائح أخرى

ذلك يعتمد كليا على التنفيذ.هل تقصد REXX لنظام التشغيل/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 أحرف، ثم على سلسلة مكونة من 100 حرف، ثم على سلسلة مكونة من 1000 حرف.

من شأن رسم الأوقات الناتجة في الرسم البياني أن يمنحك تقديرًا تقريبيًا لكيفية انخفاض الأداء.

بعد أن قلت كل هذا، أعتقد أن انخفاض الأداء يكون خطيًا على الأكثر، كما هو الحال في O(n).(يرى http://en.wikipedia.org/wiki/Big_O_notation)

إنه تطبيق لغة محدد.لقد مر وقت طويل منذ أن كتبت أي REXX الآن، في الواقع كتبت AREXX (تنفيذ Amiga) وكان ذلك قبل 15 عامًا.:-)

يمكنك كتابة روتين الاختبار الخاص بك.قم بإنشاء سلاسل ذات طول متزايد وقياس الوقت المستغرق للحصول على length() باستخدام مؤقت عالي الأداء.إذا قمت بتخزين الأوقات وأطوال السلسلة في جدول مفصول بفواصل على أساس ملف نصي، فيمكنك بعد ذلك رسمها باستخدام gnuplot.وبعد ذلك سترى بوضوح شديد مدى حجمها.

يحرر:كان يجب أن أتحقق من إجابة رولف أولاً لأنه كتب نفس الشيء تقريبًا.:-)

يمكنني التحدث عن إصدارات IBM Mainframe، وإصدار Classic Rexx لنظام التشغيل OS/2، وأي من تطبيقات Object Rexx.يتم تخزين الطول في واصف السلسلة، بحيث يكون الحمل مستقلاً عن طول السلسلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top