Для эффективной синхронизации программ, особенно когда вы заинтересованы в сравнении альтернативных решений, вам нужен контроль! Хороший способ состоит в том, чтобы поместить процедуру, которую вы синхронизируете, в функцию. Вызовите функцию в цикле синхронизации. Напишите процедуру-заглушку, по сути, удалив весь код из вашей функции и просто вернувшись из нее (но оставьте все аргументы внутри) Поместите заглушку в петлю времени и повторите время. Это измеряет все накладные расходы, связанные с синхронизацией. Вычтите время окурка из времени процедуры, чтобы получить чистую: это должно быть точной мерой фактического необходимого времени.
Поскольку в настоящее время большинство систем могут быть прерваны без прерывания, важно выполнить несколько прогонов синхронизации, чтобы проверить их изменчивость. Вместо того, чтобы делать один длинный прогон из секунд, делайте прогонов примерно по секунд каждый. Это помогает сделать это в двойной петле все за один раз. Это не только легче в обращении, но и вносит небольшую отрицательную корреляцию в каждый временной ряд, что фактически улучшает оценки.NmN/m
Используя эти базовые принципы экспериментального проектирования, вы по существу контролируете любые различия, связанные с тем, как вы развертываете код (например, различие между циклом for и replicate ()). Это делает вашу проблему уйти.