Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Оптимизация кода по размеру (http://www.flasher.ru/forum/showthread.php?t=127573)

VVall 17.07.2009 04:25

Оптимизация кода по размеру
 
Заинтересовало, как можно уменьшить размер получаемого swf-файла, если ресурсов нет или они дальше уже не оптимизируются, а кода довольно много? Например, я заметил, что уменьшение длины имён переменных влияет на размер файла, но очень незначительно (не зависит от количества упоминаний переменной?). Вопрос такой: есть-ли готовые утилиты для оптимизации размера кода, либо статьи на эту тему? Дополнительный вопрос: пустой проект (код ниже) у меня получается размером около половины килобайта при компиляции mxmlc - что именно там столько занимает?

Интерес в основном спортивный, поэтому обсуждение "да зачем вам это надо" можно не начинать.

Код AS3:

package
{
import flash.display.*;
 
public class Main extends Sprite
{
    public function Main():void
    {
    }
}
}


DarkLight 17.07.2009 04:45

Цитата:

пустой проект (код ниже) у меня получается размером около половины килобайта при компиляции mxmlc - что именно там столько занимает?
Открываем спецификацию SWF формата и смотрим)

Насчет утилит - иногда обфускаторы кода уменьшают его вес (а иногда, правда, наоборот). А вообще обычно проще ужать графику, а не код.

etc 17.07.2009 11:39

mxmlc компилит без включенного дебага?

VVall 17.07.2009 11:49

Цитата:

Сообщение от DarkLight (Сообщение 836064)
Открываем спецификацию SWF формата и смотрим)

Спасибо, не подумал, что она есть.

Цитата:

Сообщение от __etc (Сообщение 836095)
mxmlc компилит без включенного дебага?

По умолчанию да, с дебагом файл увеличивается.

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

BlooDHounD 17.07.2009 13:35

да определение чего угодно, увеличивает размер. дело в не статических переменных :)

Gaen 17.07.2009 13:52

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

VVall 17.07.2009 14:05

Цитата:

Сообщение от BlooDHounD (Сообщение 836120)
да определение чего угодно, увеличивает размер. дело в не статических переменных :)

Я имел в виду, что если сделать вместо обычной переменной статическую, это влияет на размер.

BlooDHounD 17.07.2009 14:27

VVall, а обычная это какая?

VVall 17.07.2009 15:03

Так меньше:
Код AS3:

package
{
import flash.display.*;
 
public class Main extends Sprite
{
    public var x:Number;
    public var y:Number;
    public var z:Number;
 
    public function Main():void
    {
    }
}
}

Так больше:
Код AS3:

package
{
import flash.display.*;
 
public class Main extends Sprite
{
    public static var x:Number;
    public static var y:Number;
    public static var z:Number;
 
    public function Main():void
    {
    }
}
}


BlooDHounD 17.07.2009 15:24

логично. надо же указать static где-то. он же потом не из воздуха берётся.


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

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