سؤال

أريد أن أرى المدة التي تستغرقها الوظيفة للتشغيل.ما هي أسهل طريقة للقيام بذلك في نظام PLT؟من الناحية المثالية، أريد أن أكون قادرًا على القيام بشيء مثل هذا:

> (define (loopy times)
  (if (zero? times)
      0
      (loopy (sub1 times)))) 
> (loopy 5000000)
0                      ;(after about a second)
> (timed (loopy 5000000))
Took: 0.93 seconds
0
> 

لا يهم إذا كان علي استخدام بعض تركيبات الجملة الأخرى مثل (timed loopy 5000000) أو (timed '(loopy 5000000)), أو إذا أعاد الوقت المستغرق في سلبيات أو شيء من هذا.

هل كانت مفيدة؟

المحلول

واسم موحد لتوقيت تنفيذ التعبيرات في معظم تطبيقات نظام هو "الوقت". هنا مثال من داخل DrRacket.

<اقتباس فقرة>   

و(تعريف (مرات loopy)       (إذا كان (صفر؟ مرات)           0           (loopy (مرات sub1))))

     

و(الوقت (loopy 5000000))   وقت وحدة المعالجة المركزية: 1526 في الوقت الحقيقي: 1657 الوقت GC: 0   0

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

نصائح أخرى

وجدته...

من التوثيق عبر الإنترنت:

  • (time-apply proc arg-list) يستدعي الإجراء proc مع الوسائط الموجودة في arg-list.يتم إرجاع أربع قيم:قائمة تحتوي على نتيجة (نتائج) تطبيق proc، وعدد المللي ثانية من وقت وحدة المعالجة المركزية المطلوبة للحصول على هذه النتيجة، وعدد المللي ثانية "الحقيقية" المطلوبة للنتيجة، وعدد المللي ثانية من وقت وحدة المعالجة المركزية (المضمنة في النتيجة الأولى) قضى على جمع القمامة.

مثال على الاستخدام:

> (time-apply loopy '(5000000))
(0)
621
887
0
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top