Я думаю, что тайм-аут вызывает Вашу проблему..., если это будет простым кодом (никакие асинхронные вызовы Ajax, тайм-ауты и т.д.) тогда, я не думаю, что SaveForm будет выполняться, прежде чем UserInputChanged завершается.
К вашему сведению. Кармак этого не писал. Терье Матисен и Гэри Таролли частично (и весьма скромно) признают это, а также ссылаются на некоторые другие источники.
Как была получена мифическая константа, остается загадкой.
Цитата Гэри Таролли:
] Что на самом деле делает плавающий вычисление точки в целых числах - потребовалось долго разбираться как и почему это работает, и я не могу вспомнить
Немного лучшая константа , разработанная опытным математиком (Крис Ломонт), пытающимся выяснить, как работал исходный алгоритм, выглядит следующим образом:
float InvSqrt(float x)
{
float xhalf = 0.5f * x;
int i = *(int*)&x; // get bits for floating value
i = 0x5f375a86 - (i >> 1); // gives initial guess y0
x = *(float*)&i; // convert bits back to float
x = x * (1.5f - xhalf * x * x); // Newton step, repeating increases accuracy
return x;
}
Несмотря на это, его первоначальная попытка математически «Улучшенная» версия id sqrt (которая пришла к почти той же константе) оказалась хуже той, которая была изначально разработана Гэри, несмотря на то, что математически была намного «чище». Он не мог объяснить, почему id был таким превосходным iirc.
Конечно, в наши дни это оказывается намного медленнее, чем просто использование sqrt FPU (особенно на 360 / PS3), потому что переключение между регистрами float и int приводит к загрузке и попаданию в хранилище. , в то время как модуль с плавающей запятой может делать обратный квадратный корень аппаратно.
Это просто показывает, как должна развиваться оптимизация по мере изменения характера лежащего в основе оборудования.
В вашей трассировке есть все вставки длительностью 0–3 мс. Между выполнениями бывает гораздо больше времени : вставка заканчивается в 12:53:10, следующая начинается в 12:53:13, поэтому в клиенте задержка составляет 3 секунды. ] между двумя вставками. Технически задержка может быть где угодно между клиентом и сервером, но по описанным вами симптомам я бы исключил случайный нестабильный маршрутизатор между клиентом и сервером (поведение было бы более случайным).
Кое-где я бы посмотрел:
Это действительно хорошее чтение. Это лишь малая часть.