Я пытаюсь сравнить точность методов синхронизации с C++ и Java.Временной блок кода с C++ и Java
С C++ Я обычно использую CLOCKS_PER_SEC
, я запускаю блок кода. Я хочу время на определенное время, а затем вычислить, сколько времени потребовалось, в зависимости от того, сколько раз блок выполнялся.
С Java Я обычно использую System.nanoTime()
.
Какой из них более точный, тот, который я использую для C++ или тот, который я использую для Java? Есть ли другой способ времени на C++, поэтому мне не нужно повторять фрагмент кода, чтобы получить правильное измерение? В принципе, существует ли метод System.nanoTime()
для C++?
Я знаю, что оба используют системные вызовы, которые вызывают значительные задержки. Как это искажает реальную ценность времени? Есть ли способ предотвратить это?
Можете ли вы действительно обосновать точность метода, отслеживая стандартное отклонение при циклировании в процессе? Ваш процесс, скорее всего, не единственный процесс, запущенный в системе, и планировщик должен быть свободен, чтобы дать ему время, когда он это чувствует. – user
Я сказал, что стандартное отклонение даст вам описание ** повторяемости **: если вы делаете это несколько раз, вы получаете тот же ответ (почти то же, что и «точность»). Это отличается от ** точности **: это правильный ответ. Вы не можете знать это без калибровки. Извините за то, что вы новичок в номенклатуре. – Floris
@ bruce14 - другое примечание - большинство часов, которые предоставляются (кроме часов настенных часов), измеряют время, прошедшее в процессе, поэтому они компенсируют время, в течение которого ваш процесс был приостановлен. «Getrusage()» особенно эффективен в этом отношении. – Floris