Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Free memory from bitmapdata (http://www.flasher.ru/forum/showthread.php?t=214894)

undefined 20.01.2018 22:32

можно, но там ничего нет.

Zebestov 20.01.2018 23:16

Цитата:

Сообщение от СлаваRa (Сообщение 1203912)
по ссылке тоже перейти нельзя?

Не-а =)

ZergMaster 21.01.2018 02:41

Ну да, видимо, на загрузке экономит, а память все равно выделяет для каждой новый кусок.

caseyryan 21.01.2018 10:39

Цитата:

Сообщение от Zebestov (Сообщение 1203906)
Так и сделал перед тем, как написать. Сделал два Loader-а, грузанул картинку в один, по COMPLETE грузанул в другой, кинул оба на экран, диспознул первый, второй остался.


В плане обсуждаемого поведения Loader-а SA проигрыватель и AIR ведут себя одинаково (по крайней мере на мобилах, десктопный AIR я делал пару раз и конкретно с Loader-ом не работал вроде), а FileStream к теме отношения не имеет.

:P

Да, признаю, я не прав на счет BtimapData :rolleyes: Кидайте в меня камнями :D



Сделал вот такой тест

Код AS3:

package {
        import flash.display.Bitmap;
        import flash.display.Loader;
        import flash.display.LoaderInfo;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.filesystem.File;
        import flash.net.URLRequest;
        import flash.net.URLVariables;
        import flash.text.TextField;
        import flash.text.TextFormat;
        import flash.utils.getTimer;
 
 
        public class URLLoaderTests extends Sprite {
 
                private var _currentUrl:        int                = 0;
                private var _loader:                Loader                = null;
                private var _urls:                        Vector.<String>        = new Vector.<String>();
                private var _useSameImages:        Boolean                = true;
                private var _textField:                TextField        = null;
                private var _startTime:                int                        = 0
                private var _operation:                String                = "";
                private const _maxTests:        int                        = 10;
                private var _curTest:                int                        = 0;
                private var _averageTimeSingle:int                = 0;
                private var _averageTimeMultiple:int        = 0;
 
                public function URLLoaderTests() {
                        _textField                                                = new TextField();
                        _textField.width                                = stage.stageWidth;
                        _textField.height                                = stage.stageHeight;
                        _textField.multiline                        = true;
                        _textField.wordWrap                                = true;
                        _textField.defaultTextFormat        = new TextFormat(null, 20, 0x000000);
                        _textField.mouseEnabled                = true;
                        addChild(_textField);
 
                        getUrls();
 
                        useSingleLoader();
                        //useMultipleLoaders();
                }
 
                private function getUrls():void {
                        _urls.fixed = false;
                        _urls.length = 0;
                        var directory:File = File.desktopDirectory.resolvePath("images" + File.separator + (_useSameImages ? "same" : "different"));
                        var listing:Array = directory.getDirectoryListing();
                        var totalFileSize:Number = 0;
                        for each (var file:File in listing) {
                                _urls.push(file.nativePath);
                                totalFileSize += file.size;
                        }
                        _urls.fixed = true;
                        log(_useSameImages ? "Используется одинаковая картинка" : "Используются разные картинки");
                        log("Общий вес файлов в папке: " + Number(totalFileSize / 1024 / 1024).toFixed(2) + " Мб");
                        log("Средний вес файла: " + Number((totalFileSize / 1024 / 1024) / listing.length).toFixed(2) + " Мб");
                        log("Запускаемое количество тестов: " + _maxTests + ". Начали! \n");
                }
 
                private function useSingleLoader():void {
                        _operation                        = _useSameImages ? "Одинаковая картинка (поочередно): " : "Разные картинки (поочередно): ";
                        _currentUrl                = 0;
                        var loader:Loader        = new Loader();
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadSingleComplete);
                        //log(_operation + " начато");       
                        loadNext(loader);
                        _startTime                        = getTimer();
                }
                private function onLoadSingleComplete(e:Event):void {
                        _currentUrl++;
                        var loader:Loader = (e.target as LoaderInfo).loader;
                        var image:Bitmap = e.target.content as Bitmap;
                        loadNext(loader);
                }
 
                private function loadNext(loader:Loader):void {
                        if (_currentUrl >= _urls.length) {
                                if (_curTest < _maxTests) {
                                        _averageTimeSingle += (getTimer() - _startTime);
                                        useSingleLoader();
                                        _curTest++;
                                } else {
                                        log(_operation + " Среднее время на " + _maxTests + " тестах " + (_averageTimeSingle / _maxTests) + " Мс Завершено! \n");
                                        _curTest = 0;
                                        if (_useSameImages) {
                                                _useSameImages = false;
                                                getUrls();
                                                useSingleLoader();
                                        } else {
 
                                                _useSameImages = true;
                                                getUrls();
                                                useMultipleLoaders();
                                        }
 
                                }
                                return;
                        }
                        loader.load(new URLRequest(_urls[_currentUrl]));
                }
 
                private function useMultipleLoaders():void {
                        _currentUrl                = 0;
                        _operation                        = _useSameImages ? "Одинаковая картинка (кучей): " : "Разные картинки (кучей): ";
                        for each (var url:String in _urls) {
                                var loader:Loader        = new Loader();
                                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadMultipleComplete);
                                loader.load(new URLRequest(url));
                        }
                        //log(_operation + " начато");
                        _startTime                        = getTimer();
                }
 
                private function onLoadMultipleComplete(e:Event):void {
                        _currentUrl++;
                        if (_currentUrl >= _urls.length) {
                                if (_curTest < _maxTests) {
                                        _averageTimeMultiple += (getTimer() - _startTime);
                                        useMultipleLoaders();
                                        _curTest++;
                                } else {
                                        log(_operation + " Среднее время на " + _maxTests + " тестах " + (_averageTimeMultiple / _maxTests) + " Мс Завершено! \n");
                                        if (_useSameImages) {
                                                _useSameImages = false;
                                                getUrls();
                                                useMultipleLoaders();
                                        }
 
                                }
 
                                return;
                        }
                }
 
 
                private function log(string:String):void {
                        _textField.appendText(string + "\n");
                        if (_textField.textHeight >= _textField.height) {
                                _textField.setSelection(_textField.text.length, _textField.text.length);
                        }
                }
        }
 
}


И вот такие получились результаты
Цитата:

Используется одинаковая картинка
Общий вес файлов в папке: 50.54 Мб
Средний вес файла: 1.87 Мб
Запускаемое количество тестов: 10. Начали!

Одинаковая картинка (поочередно): Среднее время на 10 тестах 962.1 Мс Завершено!

Используются разные картинки
Общий вес файлов в папке: 49.79 Мб
Средний вес файла: 1.35 Мб
Запускаемое количество тестов: 10. Начали!

Разные картинки (поочередно): Среднее время на 10 тестах 2253.1 Мс Завершено!

Используется одинаковая картинка
Общий вес файлов в папке: 50.54 Мб
Средний вес файла: 1.87 Мб
Запускаемое количество тестов: 10. Начали!

Одинаковая картинка (кучей): Среднее время на 10 тестах 282.7 Мс Завершено!

Используются разные картинки
Общий вес файлов в папке: 49.79 Мб
Средний вес файла: 1.35 Мб
Запускаемое количество тестов: 10. Начали!

Разные картинки (кучей): Среднее время на 10 тестах 282.7 Мс Завершено!


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

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