Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 05.12.2011, 12:49
Интересующийся
Отправить личное сообщение для taha Посмотреть профиль Найти все сообщения от taha
 
Регистрация: 29.11.2011
Сообщений: 22

melky,
во всех броузеров работало отлично.. просто моя позиция если можно исправить что-то, то лучше это сделать...

ещё раз спасибо всем.. анимация стала работать в разы быстрее даже на, вечно жрущем память, firefox'е

жалко только что IE<9
transition: transform 0.4s linear;
box-shadow: 0px 2px 2px rgba(0,0,0,0.7);
border-radius: 5px;

понимать отказывается, а при подключении PIE.htc вообще как-то странно себя ведёт, но срать на его пользователей.. основная часть анимации меню на js, им этого будет достаточно

Последний раз редактировалось taha, 05.12.2011 в 12:52.
Ответить с цитированием
  #42 (permalink)  
Старый 05.12.2011, 13:09
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от trikadin Посмотреть сообщение
nerv_, ваш способ медленнее и больше памяти жрёт.
не сочтите за труд, скажите почему? Дело в обращении к объекту или setTimeout?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #43 (permalink)  
Старый 05.12.2011, 13:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от nerv_ Посмотреть сообщение
не сочтите за труд, скажите почему? Дело в обращении к объекту или setTimeout?
Да мне тоже хотелось бы выслушать позицию на эту тему...
Ответить с цитированием
  #44 (permalink)  
Старый 05.12.2011, 13:55
Интересующийся
Отправить личное сообщение для taha Посмотреть профиль Найти все сообщения от taha
 
Регистрация: 29.11.2011
Сообщений: 22

здесь в теме всё описано, все мои предположения, сомнения, и опровержения со стороны знающих людей

читайте сначала этой темы

про скоп замыкания и тд.

Цитата:
Советы по оптимизации

Большое количество таймеров сильно нагружают процессор.
Если вы хотите запустить несколько анимаций одновременно, например, показать много падающих снежинок, то управляйте ими с помощью одного таймера.

Дело в том, что каждый таймер вызывает перерисовку. Поэтому браузер работает гораздо эффективней, если для всех анимаций приходится делать одну перерисовку.

Фреймворки обычно используют один setInterval и запускают все кадры в заданном интервале.
Помогайте браузеру в отрисовке
Браузер управляет отрисовкой дерева и элементы зависят друг от друга.

Если анимируемый элемент лежит глубоко в DOM, то другие элементы зависят от его размеров и позиции. Даже если анимация не касается их, браузер все равно делает лишние расчёты.

Для того, чтобы анимация меньше расходовала ресурсы процессора(и была плавнее), не анимируйте элемент, находящийся глубоко в DOM.

Вместо этого:

Для начала, удалите анимируемый элемент из DOM и прикрепите его непосредственно к BODY. Вам, возможно придется использовать position: absolute и выставить координаты.
Анимируйте элемент.
Верните его обратно в DOM.

Эта хитрость поможет выполнять сложные анимации и при этом экономить ресурсы процессора.

Если JavaScript-анимация слишком медленно работает на смартфонах и планшетах, то, возможно, стоит заменить ее CSS-переходами.
Ответить с цитированием
  #45 (permalink)  
Старый 05.12.2011, 14:09
Интересующийся
Отправить личное сообщение для taha Посмотреть профиль Найти все сообщения от taha
 
Регистрация: 29.11.2011
Сообщений: 22


анимация и процессор))
Ответить с цитированием
  #46 (permalink)  
Старый 05.12.2011, 16:08
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от taha
не сочтите за труд, скажите почему? Дело в обращении к объекту или setTimeout?
Потому что setInterval - это нативное повторение через определённый промежуток. Оно по умолчанию быстрее всего, что вы можете сделать в исполняемом коде JS. А в вашем варианте такты процессора расходуются ещё и на постоянное добавление setTimeout. Я, наверное, плохо объясняю, но суть в этом.

Вторая причина - так как setTimeout вложенный, то для поиска локальных переменных интерпретатору придётся каждый раз подниматься всё на большее кол-во скопов.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #47 (permalink)  
Старый 05.12.2011, 16:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

В целом про setTimeout vs setInterval http://alljs.ru/articles/timeout/setinterval
Ответить с цитированием
  #48 (permalink)  
Старый 05.12.2011, 16:38
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Что меня поражает, то что люди где-то что-то вычитают, и потом всем подряд советую при этом выкрикивая что, что-то там не рекомендуется. Насчет скопов я не соглашусь, наиполнейший бред, никаких скопов там не собирается. Проверено не однократно, загрузка ЦП да чуть выше у setTimeout по известной причине. Так как setTimeout более корректнее работает с задержками, пожирание памяти никакой нет... Если считаете иначе, пример в студию...

От себя добавлю, анимацию через setTimeout делаю и не имею проблем, протестировано временем и жестокими тестирования. Запустите:
setTimeout(function blah(){
    setTimeout(blah, 1);
}, 1);
при таком примере, браузер бы умер от загрузки и пожирал бы память как голодный волк. Но этого не происходит.

Хватит людям впаривать в мозг всякий бред о ресурсах и т.д. ИМХО
Ответить с цитированием
  #49 (permalink)  
Старый 05.12.2011, 16:41
Интересующийся
Отправить личное сообщение для taha Посмотреть профиль Найти все сообщения от taha
 
Регистрация: 29.11.2011
Сообщений: 22

хмммммм... и все источники противоречат друг другу...

и всётаки хотелось бы больее детальных поянений.. совершенно естествеенно, что мини-турбини функции с одим действием работают примерно одинаково, но если будет больше локальных переменных во внешней функции и их будет много в локальной, ну или они хотябы будут(в примерах статьи их нет)??? что будет??

допустим у меня с итервалом работает быстрее чем с таймаутом..

как люитель асма я немогу этого понять... использовать стек отработавшей функции - как то не очень хорошо.. но раз уж в JS есть замыкания то всёже хотелось бы пояснений... нигде про это ничего не сказано, поэтому я и поднял эту тему.. про скопы, локальные переменные и тд
Ответить с цитированием
  #50 (permalink)  
Старый 05.12.2011, 16:46
Интересующийся
Отправить личное сообщение для taha Посмотреть профиль Найти все сообщения от taha
 
Регистрация: 29.11.2011
Сообщений: 22

я конечно понимаю, что кому то всё равно, но я предпочитаю делать свои коды наиболее оптимальными и читабельными, поэтому мне интересна эта тема с setTimeout'ами и скопами.. не знаю в какое мере они создаются, в большей степени или в той какой вы говорите, но всёже создаются.. вункция работает рекурсивно и вызов следующей итерации не дожидается завершения предыдущей, в отличии от интервала


скачек нагрузки проца при каждой анимации в firefox я наблюдаю на системном мониторе.. см картинку выше

Последний раз редактировалось taha, 05.12.2011 в 16:49.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не срабатывает scrollLeft анимация в firefox krokodily jQuery 2 25.08.2016 14:19
JQuery, анимация для нескольких элементов сразу, возможно ли? Logo jQuery 21 29.05.2012 21:50
Анимация движения Armen Общие вопросы Javascript 8 02.08.2011 18:32
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Цикличность анимация? SashaBorandi jQuery 1 25.12.2008 09:20