عالية الأداء الموقت في دلفي

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

مهلة كود الخاص بك

في بعض التطبيقات ، تعتبر طرق قياس الوقت بدقة عالية وعالية الدقة مهمة ولحسن الحظ دلفي يوفر عدادًا عالي الأداء للتأهل هذه الأوقات.

باستخدام RTL الآن وظيفة

خيار واحد يستخدم الآن وظيفة. الآن، المعرفة في SysUtils الوحدة ، إرجاع تاريخ النظام الحالي والوقت.

أسطر قليلة من التعليمات البرمجية تقيس الوقت المنقضي بين "البدء" و "التوقف" لبعض العمليات:

ترجع الدالة Now تاريخ النظام الحالي ووقته بدقة تصل إلى 10 ميلي ثانية (Windows NT والإصدارات الأحدث) أو 55 ميلي ثانية (Windows 98).

لفترات صغيرة جدًا ، لا تكفي دقة "الآن" في بعض الأحيان.

باستخدام ويندوز API GetTickCount

للحصول على بيانات أكثر دقة ، استخدم GetTickCountويندوز API وظيفة. GetTickCount يسترجع عدد المللي ثانية التي انقضت منذ بدء تشغيل النظام ، لكن الوظيفة بها فقط دقة 1 مللي ثانية وقد لا تكون دقيقة دائمًا إذا ظل الكمبيوتر قيد التشغيل لفترات طويلة من زمن.

instagram viewer

يتم تخزين الوقت المنقضي كقيمة DWORD (32 بت). لذلك ، سيتم التفاف الوقت إلى الصفر إذا تم تشغيل Windows بشكل مستمر لمدة 49.7 يومًا.

GetTickCount يقتصر أيضًا على دقة مؤقت النظام (10/55 مللي ثانية).

عالية الدقة توقيت خارج التعليمات البرمجية الخاصة بك

إذا كان الكمبيوتر يدعم عداد أداء عالي الدقة ، فاستخدم QueryPerformanceFrequency وظيفة Windows API للتعبير عن التردد ، بالأعداد في الثانية. قيمة العد تعتمد على المعالج.

ال QueryPerformanceCounter تسترد الدالة القيمة الحالية لعداد الأداء عالي الدقة. عن طريق استدعاء هذه الوظيفة في بداية ونهاية قسم من التعليمات البرمجية ، يستخدم التطبيق العداد كوقت مؤقت عالي الدقة.

دقة الموقتات عالية الدقة حوالي بضع مئات من النانو ثانية. nanosecond هي وحدة زمنية تمثل 0.000000001 ثانية - أو مليار من الثانية.

TStopWatch: دلفي تنفيذ عداد عالية الدقة

مع إشارة إلى اصطلاحات التسمية .Net ، مثل العداد TStopWatch يقدم حل دلفي عالي الدقة لقياسات زمنية دقيقة.

يقيس TStopWatch الوقت المنقضي عن طريق حساب علامات ضبط الوقت في آلية المؤقت الأساسية.

  • ال IsHighResolution تشير الخاصية إلى ما إذا كان المؤقت يعتمد على عداد أداء عالي الدقة.
  • ال بداية تبدأ طريقة قياس الوقت المنقضي.
  • ال قف طريقة توقف عن قياس الوقت المنقضي.
  • ال ElapsedMilliseconds الخاصية يحصل على إجمالي الوقت المنقضي بالمللي ثانية.
  • ال منقضي الخاصية يحصل على إجمالي الوقت المنقضي في علامات التجزئة الموقت.

إليك مثال للاستخدام: