Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 14.07.2010, 06:15
unix0id вне форума Посмотреть профиль Отправить личное сообщение для unix0id Найти все сообщения от unix0id
  № 1  
Ответить с цитированием
unix0id

Регистрация: Jul 2010
Сообщений: 11
Attention Firefox + LoadVars + SetInterval = Пожирание CPU (CPU hog)

Мое почтение,
Заранее прошу прощения если что не так оформлено или написано, это мой первый пост. На форумах никогда не писал, обычно читал и анализировал информацию.
Но тут дело серьезное, бьюсь над проблемой уже неделю перелопатил не один форум в.т.ч англоязычные результат близкий к нулевому.
Итак собственно к сути. Я Разрабатываю приложение для контакта. Некая смесь MMORPG и Шахмат Online (На самом деле приложение уже работает и одобренно администрацией контакта). Приложение достаточно комфортно себя чувствует в браузерах(IE, Opera, Google, Chrom)
НО, в Firefox творится что-то невероятное... за 5-6 минут игра съедает процессор под 100% и становится не то что невозможно играть, но даже проблемно закрыть браузер.
Сначала я грешил на утечку памяти (memory leaks) перепроверил все ф-ции подчистил все NEW обьекты delet'ом. не помогает... CPU кушается за милую душу
После долгих мытарств установил что память не кушается если убрать из всех активных интервалов LoadVariables или LoadVars
(Под активными интервалами имею в виду - интервалы отвечающие за сетевое взаимодействие т.е. все время выполняют одну и ту же задачу, например отправляют Alive пакеты на сервер каждую секунду для того чтобы показасть что пользователь онлайн)
Т.Е. установил что Firefox начинает подъедать CPU только если происходит частое сетевое взаимодействие (частое: 1 пекет на отправку 4 на получение в секунду)

Для проверки создал пустое приложение в него запихнул 2 интервала в каждом интервале написал выполнение 1ого loadvars (с кодом по типу приведенного ниже). за пол часа данный скрипт съел 70% CPU
Ниже привожу пример исользуемого мной куска кода с 1им циклом. для примера оформления... может заметите что-то что может грузить CPU или вызывать утечки памяти.
Код AS1/AS2:
//Ф-ция опроса ячейки чата
function logsLoaded() {
	//грузим данные с SQL
	var chatvar:LoadVars = new LoadVars();
	chatvar.load("http://www.site.com/?cmd=get1&game_id="+_global.game_id+"&id=11&f="+_global.battleType+"&time="+getTimer());
	chatvar.onLoad = function(success) {
		// загрузили
		if (success) {
			//если есть данные выводим их в окне чата
			if (chatvar.firstPerson != undefined) {
				_global.lastcharacter = chatvar.firstPerson;
				// для того чтобы не выводить повторяющиеся сообщения
				if (_global.lastcharacter != _global.prelast) {
					_global.prelast = _global.lastcharacter;
					_root.chat_txt = "<font color='#000000'><b>DEMO MODE: '"+chatvar.firstPerson+"'</b></font>\n"+_root.chat_txt;
					//очищаем new
					delete chatvar;
				} else {
					//очищаем new деже если не загр
					delete chatvar;
				}
			}
		}
	};
	//паранойно чистим все что можно от mem leaks
	//для того чтобы перебдеть и очистить на всякий случай интервал использую следующую конструкцию
						delete chatvar;
						clearInterval(_global.logs_interval);
						delete _global.logs_interval;
						_global.logs_interval = setInterval(logsLoaded, 1200);
						_global.ClearLogsInt =Number (_global.ClearLogsInt+1) ;
						_root.chat_txt = _global.ClearLogsInt;
 
}
// первый запуск ф-ции в цикл
_root.logsLoaded();
Напомню что данная проблема только в Firefox. а другие браузеры работают норм... У меня соят Флеш и Файерфокс самые последние. на других компьютерах с более старыми версиями тоже самое. Очень прошу всех кто понимает о чем речь или испытывал подобные проблемы отозваться. Помогите разобраться как решить проблему, проект гибнет ! 6 мес работы на смарку. могу дать ссылку на рабочий проект в контакте. И куски исходников тем кто в состоянии помочь. Готов проставиться за адекватную помощь (СПб). Да что там, готов заплатить если помогут эксперты.

Создать новую тему   Часовой пояс GMT +4, время: 21:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:29.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.