لحساب الفاصل الزمني في Go، يمكنك استخدام
start := time.Now() // long time consuming task duration := time.Since(start)
ولكن هل تعلم أن حزمة الوقت في Go تحتوي بالفعل على مرتين، وأن time.Since() يقيس وقت المعالجة فقط (الساعة الرتيبة)، وليس الوقت الحقيقي (ساعة الحائط)؟
على سبيل المثال، إذا كانت المهمة طويلة جدًا، طوال الليل، ودخل جهاز الكمبيوتر الخاص بك في وضع السكون. ثم في الصباح، قد تأتي وترى أن المدة استمرت 4 ساعات فقط بينما مرت 10 ساعات إجمالاً.
تنص الحزمة الزمنية في Go على أن
توفر أنظمة التشغيل كلاً من "ساعة الحائط" التي تخضع لتغييرات لمزامنة الساعة، و"ساعة رتيبة" وهي ليست كذلك. القاعدة العامة هي أن ساعة الحائط مخصصة لمعرفة الوقت والساعة الرتيبة لقياس الوقت.
ما يخبرك به حقًا في المثال أعلاه هو أن برنامجك يعمل بشكل نشط لمدة 4 ساعات، لكن الكمبيوتر ينام 6 ساعات، لذلك انتظرت إجماليًا 10 ساعات. إذا لم ينام الكمبيوتر، فسيتم ذلك خلال 4 ساعات.
إذن ماذا تفعل إذا كنت تريد قياس وقت الحائط؟ يمكنك استخدام الدالة Round(0). t = t.Round(0) سوف يزيل الساعة الرتيبة في t.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3