Показать сообщение отдельно
  #3 (permalink)  
Старый 24.03.2015, 08:04
Новичок на форуме
Отправить личное сообщение для kuksha Посмотреть профиль Найти все сообщения от kuksha
 
Регистрация: 26.12.2011
Сообщений: 9

Ну всё правильно, canv.onmousemove вызывает внутри себя функцию Draw_map при нажатой клавише мыши. Собственно я про это писал - "Draw_map вызывается при каждом изменении координат мыши"... Вероятно поэтому на "верхнем" уровне видно, что тормозит вроде как canv.onmousemove.
Но, реальные тормоза именно в Draw_map, прочитайте пожалуйста ещё раз первое сообщение (без претензий, я сам понимаю, что написано мутновато... но как смог...).

Попробую другими словами объяснить:
Draw_map также вызывается в начале отображении страницы, независимо от мышки. В самом её начале проверяется значение Pervy_prohod и если ==0 , то считываются данные из формы, чтобы определить размер карты. После чего Pervy_prohod=1.
Всё, дальше мы в этот кусок кода больше не проваливаемся при последующих вызовах Draw_map от перемещений мыши (об этом говорит то, что сообщение alert показывается только в самом начале).
Но, тормоза исчезают, если мы в этом куске кода жёстко зададим размеры карты, вместо их считывания из формы - это показано во второй ссылке первого сообщения.
Каким-то образом, этот кусок влияет на скорость отработки, несмотря на то, что все последующие разы он ОБХОДИТСЯ благодаря условию
if (Pervy_prohod==0)

Ну вот, не знаю как ещё объяснить...

Коллеги на работе просто глаза вытаращили, потому что это полный бред с точки зрения алгоритмики и больше похоже на глюк интерпретатора ДжаваСкрипта - как будто он запоминает, что эти значения надо читать каждый раз из формы, несмотря ни на что... Всё-же надеюсь, что напортачил именно я, вот только где?

Последний раз редактировалось kuksha, 24.03.2015 в 08:30.
Ответить с цитированием