spmbt
@spmbt

Страница Хабра 404 съедает много процессорных ресурсов и скрипт не отключается?

Скрипт на habrahabr.ru/404/ написан так, что пересчитывает координаты DOM-объектов с максимальной скоростью (интервал 1 мс), доступной для браузера. Это приводит к тому, что загрузка Firefox на 2-ядернике e7200, например, 33%, у Хрома — около 4%, у Оперы — 6-8%, на неактивной вкладке отключается.
$(document).ready(function(){
	var brainstorage = $('.brainstorage')
	var hantim = $('.hantim')
	var freelansim = $('.freelansim')

	var brainstorage_start = 0;
	var hantim_start = 1600;
	var freelansim_start = 3600;
	
	setInterval(function(){    
    ++brainstorage_start;    
    var brainstorage_css = {
    	'left': Math.sin(brainstorage_start * 0.001) * 165, 
    	'top': Math.cos(brainstorage_start * 0.001) * 165
    	}
    brainstorage.css(brainstorage_css);
   	
   	++hantim_start;    
    var hantim_css = {
    	'left': Math.sin(hantim_start * 0.001) * 160 , 
    	'top': Math.cos(hantim_start * 0.001) * 160
    	}
    hantim.css(hantim_css); 
    
    ++freelansim_start;    
    var freelansim_css = {
    	'left': Math.sin(freelansim_start * 0.001) * 165 , 
    	'top': Math.cos(freelansim_start * 0.001) * 165
    	}
    freelansim.css(freelansim_css); 
  }, 1);
})



Собственно, решение найдено, нагрузка сразу падает до фоновых 1%:
$('.hantim,.freelansim,.brainstorage').remove();но, видимо, это не то, что хотели создатели: );

Вопрос: как дописать скрипт Хабра так, чтобы он работал корректно?

На других системах результаты будут другие, поэтому второй вопрос — у кого какая загрузка существующим скриптом разных браузеров и на каких системах? У многих ли так плохо на Fx?
  • Вопрос задан
  • 3671 просмотр
Пригласить эксперта
Ответы на вопрос 2
stampoon
@stampoon
Linux, x86, FF 20.0a2, AMD A10-5700, отжирает 30%
Ответ написан
@egorinsk
Код на странице явно поручили неопытному стажеру.

— Надо использовать requestAnimationFrame где он доступен
— Надо вычислять положение объекта из времени и уравнения движения, а не увеличивать его каждый раз на определенный шаг (так как никто не гарантирует что callback будет вызываться равномерно, на практике это не так)
— Canvas может дать выигрыш, а может и не дать, плюс придется думать что делать в ИЕ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы