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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Dec 2003
Адрес: Тбилиси, Грузия
Сообщений: 36
Отправить сообщение для Leo45 с помощью ICQ
По умолчанию Оптимизациа ActionScript-а

Народ, я написал флеш-программу, но она ооочень жрет проц. мощь, так вот, может быть есть метод, узнать в какой момент какие переменные засоряют процессор, что-б оптимизировать код.
Спасибо...

З.Ы. исходник не буду выстовлять, т.к. никто не обязан разбираться в моем бордаке, а вот сам swf на всякий, пожарный :-)
__________________
The truth is out there...

Старый 09.07.2004, 21:30
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 2  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
коментируешь часть кода и смотришь на загрузку процессора

Старый 09.07.2004, 21:37
Leo45 вне форума Посмотреть профиль Отправить личное сообщение для Leo45 Найти все сообщения от Leo45
  № 3  
Leo45

Регистрация: Dec 2003
Адрес: Тбилиси, Грузия
Сообщений: 36
Отправить сообщение для Leo45 с помощью ICQ
и все?
__________________
The truth is out there...

Старый 09.07.2004, 21:44
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 4  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
как посоветовать способ оптимизации кода, не имея его?
есть базовые принципы, но их описание - довольно большой объем инфы.
нужно смотреть на конкретный код, чтобы дать конкретные советы.

Старый 09.07.2004, 22:22
Leo45 вне форума Посмотреть профиль Отправить личное сообщение для Leo45 Найти все сообщения от Leo45
  № 5  
Leo45

Регистрация: Dec 2003
Адрес: Тбилиси, Грузия
Сообщений: 36
Отправить сообщение для Leo45 с помощью ICQ
Ради бога
__________________
The truth is out there...

Старый 09.07.2004, 22:57
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 6  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
добрый ты.

дал бы еще ссылку на твою файловую систему
- нет таких прав говорит

Старый 10.07.2004, 00:11
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 7  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
а.. нет
ссылка была с пробелом
удалил пробел, скачалось.

Старый 12.07.2004, 18:24
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 8  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Наверное можно еще что нибудь выжать.
но я старался
Вложения
Тип файла: zip grid1.zip (7.1 Кб, 101 просмотров)

Старый 12.07.2004, 23:37
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 9  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
да, на этот раз полегчало, но даже если убрать один из обходов:
Код:
for (var i = 1; i<=col; i++) {
		for (var j = 1; j<=col; j++) {
			var sx, sy, mc, mc2;
			mc = field['p'+i+' '+j];
			mc.sx = mc.sy=0;
			if (mc.left) {
				mc2=mc.left
				sx = (mc._x-mc2._x+dist)/frict;
				sy = (mc._y-mc2._y)/frict;
				mc.sx += sx;
				mc2.sx -= sx;
				mc.sy += sy;
				mc2.sy -= sy;
			}
			if (mc.top) {
				mc2=mc.top
				sx = (mc._x-mc2._x)/frict;
				sy = (mc._y-mc2._y+dist)/frict;
				mc.sx += sx;
				mc2.sx -= sx;
				mc.sy += sy;
				mc2.sy -= sy;
			}
		}
	}
	// */
	for (var i = 1; i<=col; i++) {
		for (var j = 1; j<=col; j++) {
			mc = field['p'+i+' '+j];
			if (!mc.dragged) {
				mc._x -= mc.sx;
				mc._y -= mc.sy;
			}
		}
	}
	// */
	field.clear();
	field.lineStyle(1, 0, 100);
	for (var i = 1; i<=col; i++) {
		var mc = field['p'+i+' 1'];
		field.moveTo(mc._x, mc._y);
		while (mc) {
			field.lineTo(mc._x, mc._y);
			mc = mc.bottom;
		}
		var mc = field['p1 '+i];
		field.moveTo(mc._x, mc._y);
		while (mc) {
			field.lineTo(mc._x, mc._y);
			mc = mc.right;
		}
	}
то все равно все довольно коряво. сорри.
смысл в том, что все эти переходы по кадрам - вчерашний день. И не юзабельны и оч трудно читаются.
Я на твоем месте сделал бы класс, тогда все быстро встает на свои места.

Не совсем то, что тебе нужно, потому как вникать в детали поведения твоего исходника влом, (ну нетрезв.. прости ), но принцип, думаю, будет понятен:
Код:
#initclip
this.setPointClass = function() {
 var PointClass = function () {
  arguments.callee.addListener(this);
  if (PointClass._listeners[0] == this) {
   this.first = true;
  }
 };
 var tmp = PointClass.prototype=new MovieClip();
 var centerPoint = {_x:0, _y:0};
 tmp.onLoad = function() {
  if (this.first) {
   centerPoint._x = centerPoint._y=0;
   this.onMessage("onCalcCenter", centerPoint);
  }
  this.x=this._x-centerPoint._x, this.y=this._y-centerPoint._y;
  var d = Math.sqrt(this.x*this.x+this.y*this.y);
  this.fric = .1-d/1000;
 };
 Object.registerClass("point_mc", PointClass);
 AsBroadcaster.initialize(PointClass);
 tmp.onMessage = function() {
  PointClass.broadcastMessage.apply(PointClass, arguments);
 };
 tmp.onPress = function() {
  this.onEnterFrame = this.recalcCenterPoint;
  var p = this._parent, x, y;
  this.onMouseMove = function() {
   x=this._x=p._xmouse, y=this._y=p._ymouse;
   this.onMessage("onChangeTarget", x-this.x, y-this.y), updateAfterEvent();
  };
  this.onMouseUp = function() {
   this.recalcCenterPoint();
   this.onMessage("onChangeTarget", x+this.x, y+this.y);
   delete this.onMouseMove, delete this.onMouseUp, delete this.onEnterFrame;
  };
 };
 tmp.recalcCenterPoint = function() {
  centerPoint._x = centerPoint._y=0;
  this.onMessage("onCalcCenter", centerPoint);
 };
 tmp.onCalcCenter = function(pt) {
  var len = PointClass._listeners.length;
  pt._x += this._x/len, pt._y += this._y/len;
 };
 tmp.onChangeTarget = function(x, y) {
  this.xt=x-this.x, this.yt=y-this.y;
 };
 tmp.onEnterFrame = function() {
  var x = centerPoint._x+this.x, y = centerPoint._y+this.y;
  this._x += this.xst += (x-this._x)*this.fric, this._y += this.yst += (y-this._y)*this.fric;
  this.xst *= .8, this.yst *= .8;
  if (PointClass._listeners[0] == this) {
   recalcCenterPoint;
  }
 };
 var rm = MovieClip.prototype.removeMovieClip;
 tmp.removeMovieClip = function() {
  PointClass.removeListener(this), rm.apply(this);
 };
};
this.setPointClass();
delete this.setPointClass;
#endinitclip
т.е. каждая точка должна думать о себе.
эээ ... залинкуй point_mc
и накидай их на сцену несколько штук... не важно куда
а код пихни в этот point_mc.

всех благафф

Старый 13.07.2004, 16:43
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 10  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Код изначально не мой был...
так что я постарался оставить стиль автора
ведь задача оптимизировать, а не написать красиво

про первый цикл действительно тормознул. он совершенно не нужен.. ну а в остальном... мне кажется если заставить точки думать "за себя" то это будет конечно 'красивше'... но почти наверняка медленнее. Это как С++ и С. Конечно, гораздо приятнее делать код объектно ориентированным. Но если ты хочешь что бы код работал быстро про С++ можно забыть.

В данном случае, например, в лучае точки-объекта придется просчитать для каждой точки все 4 связи. А если это делать в цикле по порядку то достаточно просчитывать только две связи из-за симетрии

Но вообще интересно попробовать.. омжет действительно быстрее будет?

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

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

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


 


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


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