هل هناك طريقة دقيقة لتحديد الفرق في nanoTime بين عمليتين جافا؟

StackOverflow https://stackoverflow.com/questions/1059778

  •  21-08-2019
  •  | 
  •  

سؤال

لدينا عدد قليل من العمليات في جاوة التي تستخدم لقياس nanoTime الداخلي (منذ التي من المفترض أن تكون دقيقة في نفس الموضوع).

والعمليات يمكن الاتصال فيما بينها.

هل هناك طريقة قياسية لتحديد الفرق في nanoTime بين المواضيع؟ (على سبيل المثال، تحاكي NTP؟). وينبغي أن يتم ذلك بانتظام؟

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

المحلول

ووجافادوك يؤهل طريقة nanoTime () مع الكثير من التحذيرات. جوهر ذلك يبدو أن تتمكن من استخدامها داخل كتلة من التعليمات البرمجية لقياس الوقت المنقضي، مما يتيح لك "نانو ثانية الدقة، ولكن ليس بالضرورة النانوسيكند دقة".

وهذا هو اللغة الغامضة، وربما تعمد ذلك. أنا ربما تجنب المقارنة بين اثنين من مختلف الحسابات الوقت المنقضي التي تستخدم nanoTime ()، فمن المحتمل أن تعطيك نتائج سيئة.

وإذا كان هذا هو لقياس، قد يكون فكرة جيدة لقياس نفس رمز في حلقة، وبذلك الوقت المنقضي حتى في نطاق ميلي ثانية واحدة، مما يتيح لك استخدام currentTimeMillis () بدلا من ذلك، وهو أكثر موثوقية.

نصائح أخرى

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

وفيما يتعلق لمزامنة وقيمة في حد ذاته، على ويندوز ويضمن لك أن مزامن قيمة، حتى على معالجات مختلفة. أيضا على ويندوز معدل الزيادة هو ثابت. لأن يتم دعم هذه الممتلكات واسترجاع تلك القيمة غير مكلفة.

في لينكس ليس هناك تزامن بين المعالجات، علاوة على ذلك، فإن معدل الزيادة يمكن أن تختلف عندما تردد CPU يتغير (على سبيل المثال. بسبب توفير الطاقة).

في سولاريس مشابه لينكس بصرف النظر عن ضمان أن nanoTime المقبل هو> = nanoTime الماضي.

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