Тема: HTA: О рекурсии в динамическом HTA
• В IE8, а HTA – это суть IE7 (близкий брат IE8), когда в синхронном скроллинге я избавился от рекурсии, освободились немалые ресурсы...
В другом месте применённого мной синхронного скроллинга, покуда действует „схема” рекурсивная, ибо в ней имеются некоторые незаменимые в IE8 свойства, подобные отрицательной обратной связи, но здесь не об этом; так вот, тут пришлось сии не в меру напрягающие динамику последовательности разделять таймингами аж в .3 секунды, а иначе – с каждым последующим циклом – тормоз, вплоть до полного...
Я предполагаю, что это от кэширования данных ((когда, к примеру, страница скроллировала первый раз, когда итерации вычислялись и задавались рекурсивно, иногда появлялись заметные глазу задержки, тогда как при скроллированиях повторных их не было – здесь, при скроллинге синхронном, задержки были не от той или иной, правильной или неправильной „схемы”, а от как бы утяжелённой самой страницы, как показала практика, от до конца не освобождаемой памяти [в IE8 такая утерянная память не освобождалась до конца даже при переходах по ссылкам, и она за час сёрфинга могла легко перевалить и за треть гигабайта, так что простая перезагрузка страницы IE или HTA, тут будет бездейственна])). Когда кэш не в меру растёт ((что при рекурсии обычно и происходит, когда рост кол-ва кэшируемых данных при росте кол-ва (вложенных) итераций прогрессирует – и хоть обычно с коэффициентом и малым, но всё же геометрически)), то заместо оптимизации происходит обратное, когда вычисления повторные были бы предпочтительнее долгого поиска данных в безразмерно раздувающемся кэше.
Когда же при переделке динамически открываемой страницы для работы той в HTA, обнаружились подобные задержки и при скроллинге не синхронном ((да и задержки те были уже не на доли, а на целые секунды – HTA-страница, асинхронно раскрывшись, запустилась, синхронно к цели прокрутилась, и на секунду-другую зависла)), то я решил избавляться от всех рекурсий, то есть даже и от работающих немодально – речь идёт об анимациях посредством не библиотек, а „схем” собственных, простых.
И, как оказалось, не зря; и с каждым удалением рекурсий всякая динамика всё улучшалась и улучшалась: да я и не думал, что асинхронные анимации в архаичных IE8 и HTA могут быть стабильными, подобными анимациям в новых браузерах, шустрых ((анимации синхронные, такие, как скроллинг, в новых браузерах, кроме как в (подобном IE9-) Safari и в старых Opera, про Edge не знаю, невозможны)) – я много лет не понимал почему динамические мои „схемы” в IE8 „тормозят”, а те же самые анимации осуществляемые посредством jQuery работают гораздо плавнее...
—————————————————
Пример цикла синхронного:
рекурсивного:
;(function f(i){ 1+2
i++<100? f(i):0})(0)
нерекурсивного:
i=-1;while(i++<99){ 1+2}
—————————————————
Пример цикла асинхронного:
рекурсивного:
;(function f(i){
i++<100?setTimeout(function(){1+2
f(i)},4):0})(-1)
нерекурсивного:
;(function(i, t){t=setInterval(function(){
if(i++<99) 1+2
else clearInterval(t),t=null},4)})(0)
—————————————————
Мои темы:
+ открыть спойлер
HTA: Создать архив и скопировать на одни или и на другие диски
HTA: Справка пользователя по горячим клавишам с поиском дублей
HTA: Точное время KMPlayer'а (для субтитров) в окне createPopup()
+ открыть спойлерКто использует что-либо из мной здесь опубликованного, в связи с последними изменениями буквально всего, рекомендую всё перекачать.
Более полную коллекцию удобняшек и скриптов можно найти в скачиваемом файле на странице:
http://www.liveinternet.ru/users/yurachb/post415980837И где бы мы ни прятались от других Всюду будет виден наш белый след.