Как рассчитывается время работы виртуальной машины и как рассчитывается системное время?Я знаю, что могу узнать текущее время работы AVM, позвонив по телефону:
getTimer();
И я могу узнать текущее системное время Unix, выполнив:
new Date().getTime();
Я знаю, что класс Timer и событие Event.ENTER_FRAME имеют свои взлеты и падения, но я полагал, что 2 сравниваемых значения должны оставаться последовательно относительно друг друга.Вот как я это тестирую:
private var _appRunTime:int;
private var _appStartTime:int;
private var _systemTime:int;
private var _systemCurrentTime:int;
//called at application launch
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
_systemTime = new Date().getTime();
_appStartTime = getTimer();
}
//called on button click to see values
protected function button1_clickHandler(event:MouseEvent):void
{
_systemCurrentTime = new Date().getTime();
_appRunTime = getTimer();
trace(_systemCurrentTime - _systemTime, _appRunTime - _appStartTime);
}
Я не понимаю, почему эти числа медленно теряют синхронизацию.Используя этот код, я обнаружил, по крайней мере на моем компьютере, что значения растут отдельно друг от друга примерно на 3 миллисекунды в минуту, причем значение, полученное из системного времени, является более высоким значением, а значение, полученное из времени AVM, являетсяниже.
Может ли кто-нибудь дать мне объяснение, на что они рассчитаны и почему с течением времени будет небольшой, но растущий разрыв в их значениях?