سؤال

هل هناك أي طريقة لقراءة عداد الطابع الزمني على وحدات المعالجة المركزية x86 في بايثون؟

وأنا أعلم أن استخدام rdtscp سيئة واستخدامها rdtsc هو أسوأ من ذلك.لكن ثق بي، فأنا أحتاج حقًا إلى هذه القيمة، أو على الأقل بعض التقريب لهذه القيمة.

أيه أفكار؟

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

المحلول

مع لغة بايثون العادية، time.clock() هو الشيء الأكثر دقة الذي ستحصل عليه.

time.clock()

على UNIX ، أعد وقت المعالج الحالي كرقم عائم معبر عنه في ثوانٍ.تعتمد الدقة ، وفي الواقع على تعريف معنى "وقت المعالج" ، على وظيفة C التي تحمل نفس الاسم ، ولكن على أي حال ، هذه هي الوظيفة التي يجب استخدامها في قياس خوارزميات Python أو توقيت.

على Windows ، تُرجع هذه الوظيفة ثواني على مدار الساعة المنقضي منذ أول مكالمة لهذه الوظيفة ، كرقم عائم ، استنادًا إلى Win32 function QueryperFormanceCounter ().القرار عادة ما يكون أفضل من واحد microsecond.

إذا كنت تريد حقًا الحصول على علامات المعالج، فقط تذكر الوقت اللازم لتنفيذ استدعاء بايثون هذا - لذا فإن بايثون ليست اللغة المناسبة للقيام بقياس الوقت بالميكروثانية.

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