Вопрос

...Я работаю над парой теорий, но мне интересно услышать другие мнения.

Это было проверено на трех разных машинах, двух под управлением Windows и другой под управлением Linux.Используемый компилятор - flexbuild (предположительно mxmlc) и ant с mxmlc.

Мы добавлено код для небольшого автономного проекта с одним файлом .as и размер скомпилированного swf-файла уменьшились на 20 КБ, с 32 КБ до 12 КБ в Linux box.Немного отличается в Windows box, с 27 тыс. до 8,5 тыс.

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

Никакого удаления кода (никаких удалений импорта, никаких удалений переменных, nada), только добавление, и при этом довольно простое: пара компонентов добавлена на сцену, включена, пара небольших функций и т.д., Циклы не изменены, ничего очевидного, что привело бы к уменьшению объема кода.

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

Ни один код не использует компоненты Flex, просто прямой импорт типа "flash.etc ...".

Кто-нибудь видел подобное поведение?Как вы думаете, что может быть причиной этого?

Это было полезно?

Решение

Я уже видел подобное поведение в сборках .NET раньше.

Мое предположение об этом поведении (где бы оно ни происходило) заключается в том, что все, что добавляется, позволяет компилятору выполнять большую оптимизацию, чем это могло быть ранее.

Почему это может быть, потребовало бы гораздо более подробного знания внутренней работы компиляторов, чем у меня есть (и почему это может происходить - если это действительно причина здесь - в вашем случае, вероятно, может быть полностью адекватно объяснено только инженером Adobe).

Другие советы

Я просто предполагаю, но когда дело доходит до файлов такого размера, может быть, вы видите провисание секторов жесткого диска?

Мое первое предположение состояло бы в том, что первый swf-файл был скомпилирован в режиме отладки, который добавляет кучу информации.Если это не так, то я бы предположил, что второй вариант был скомпилирован с помощью -optimize= true .

Но если ни то, ни другое не так, то это действительно так очень интересно!

Я тоже видел такое же поведение раньше.Я предполагаю, что это сочетание двух факторов:оптимизация и сжатие.Возможно, ваш новый код позволяет оптимизатору делать что-то по-другому (или, неинтуитивно, предотвращает какое-то встраивание или развертывание цикла, которое он делал раньше).Я бы сказал, что более вероятно, что присутствующие дополнительные данные сделали его лучшим кандидатом для сжатия, поскольку все flash-файлы сжимаются, поэтому его сжатие было более эффективным.Обе теории - всего лишь полуобразованные догадки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top