![]() |
|
||||||||||
|
|||||
|
У тебя тест не правильный) Флеш плеер одну и ту же битмап дату не будет много раз грузить. В общем, ты загрузил всего одну картинку, а для остальных хэш проверился и фактической загрузки не было.
Вот тебе реальный тест с разными картинками package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.filesystem.File; import flash.net.URLLoader; import flash.net.URLRequest; import flash.utils.getTimer; public class MultiloadTest extends Sprite { private var _loader: Loader = null; private var _curIndex: int = 0; private var _numImages: int = 0; private var _paths: Array = []; private var _imageFiles:Array = null; private var _isAsync: Boolean = false; private var _startTime: int = 0; public function MultiloadTest() { var imagesDirectory: File = File.applicationDirectory.resolvePath("images"); _imageFiles = imagesDirectory.getDirectoryListing(); _numImages = _imageFiles.length; //loadQueue(); loadAsync(); trace("num images", _numImages, _isAsync); } private function loadAsync():void { _isAsync = true; _startTime = getTimer(); for (var i:int = 0; i < _numImages; i++) { var file:File = _imageFiles[i]; var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.load(new URLRequest(file.nativePath)); } } private function loadQueue():void { _isAsync = false; _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); for (var i:int = 0; i < _numImages; i++) { var file:File = _imageFiles[i]; _paths.push(file.nativePath); } _startTime = getTimer(); _loader.load(new URLRequest(_paths[_curIndex])); } private function onComplete(e:Event):void { _curIndex++; if (_curIndex >= _numImages) { trace("compelte in:", getTimer() - _startTime, "ms"); } else if (!_isAsync) { _loader.load(new URLRequest(_paths[_curIndex])); } } } } Вот результаты тестов num images 210 false compelte in: 7461 ms num images 210 true compelte in: 828 ms Разница в 9 раз. Более чем существенная. А ведь это всего 210 маленьких картинок, общим весом чуть больше 11 мегабайт. Вообще, странно, я знаю, что ты далеко не глупый человек, и я честно не понимаю, почему до тебя сразу не дошло то, что в твоем случае ты грузишь картинку, и ждешь ее полной загрузки прежде чем начать загрузку новой, а со множеством загрузчиков ты сразу грузишь столько картинок, сколько вообще возможно. Во много потоков. Естественно они загрузятся нанмого быстрее, чем поочереди
__________________
Ко мне можно и нужно обращаться на ты) Последний раз редактировалось caseyryan; 06.12.2016 в 21:08. |
|
|||||
|
Цитата:
Цитата:
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Цитата:
Цитата:
Но параллельная многопоточная загрузка всегда быстрее однопоточной поочередной, хоть маленькие ты файлы грузишь, хоть большие. Добавлено через 6 минут Вот другой тест. На этот раз есть и большие и маленькие Тест 133 JPEG картинки. Общий вес 150мб. минимальный размер картинки в папке: 40 кб, максимальный 10 мб Результаты: num images 133 false compelte in: 4867 ms num images 133 true compelte in: 740 ms __________________ Тест на небольшом количестве Тест 12 картинок. Общий вес 33мб. минимальный размер картинки в папке 1,92мб максимальный 9,43 мб Результаты: num images 12 false compelte in: 766 ms num images 12 true compelte in: 471 ms _________________ Вывод, чем меньше картинок, тем меньше разница в результатах и скорость напрямую зависит от количества Есть еще сомнения? Могу и на 1000 файлов по 2 мегабайта проверить) И тоже даю тебе 100% что результаты буду ОЧЕНЬ разными
__________________
Ко мне можно и нужно обращаться на ты) Последний раз редактировалось caseyryan; 07.12.2016 в 06:38. |
|
|||||
|
Цитата:
Также проверил на 220-ти изображениях по 1.5 кбайт, и действительно разница в 9 раз. Всё логично. У загрузки с несколькими загрузчиками есть один довольно неприятный минус - они вешают плеер намертво. А, кстати. Всё проводил не в AIR, а в плеере.
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 07.12.2016 в 10:19. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,282
|
Цитата:
|
|
|||||
|
Цитата:
![]() Цитата:
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 07.12.2016 в 16:49. |
|
|||||
|
ZackMercury, хороши ли есть грузить 2500(тыс) растров одновременно ?? (ну как ты проделал)
|
|
|||||
|
Одновременно - нет. Подгружать нужно по необходимости. Вошёл человек в меню - загружаются спрайты/звуки меню, вошёл человек в игру - выгружаются спрайты/звуки меню, загружаются спрайты/звуки уровня.
К тому же, 2.5 ляма растров - это где вы найдёте столько изображений?)))
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Цитата:
Цитата:
Цитата:
И в первом и во втором случае будет разница примерно в 9 раз. Это никак не зависит от HDD. Я бы даже сказал, в первом случае поочередная загрузка будет даже медленнее, так как придется ждать пока каждый из сотни 3 - 4 мегабайтных файлов загрузится поочереди Вывод: если нет жестких ограничений по памяти (как на мобилах), грузить надо всегда множеством загрузчиков, для максимальной скорости загрузки.
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
|
Цитата:
Цитата:
Цитата:
__________________
There is no thing in this world that is not simple. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|