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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.12.2016, 20:55
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 51  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
У тебя тест не правильный) Флеш плеер одну и ту же битмап дату не будет много раз грузить. В общем, ты загрузил всего одну картинку, а для остальных хэш проверился и фактической загрузки не было.
Вот тебе реальный тест с разными картинками
Код AS3:
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]));
			}
		}
 
	}
 
}
В первой сборке вызываем loadQueue(), при этом loadAsync() откомментирована. Во втором случае наоборот.
Вот результаты тестов

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.
Старый 06.12.2016, 23:52
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 52  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
У тебя тест не правильный) Флеш плеер одну и ту же битмап дату не будет много раз грузить. В общем, ты загрузил всего одну картинку, а для остальных хэш проверился и фактической загрузки не было.
Тоесть 6.5 секунд проверялся хеш? Что-то не верится.

Цитата:
А ведь это всего 210 маленьких картинок, общим весом чуть больше 11 мегабайт.
Костя, да, есть такое. Тут дело не в кол-ве картинок, а в их размере. Да, много мелких картинок лучше грузить в много загрузчиков. Грузи файлы по 2-10 мб, чтобы получить одинаковые результаты на обоих тестах, и хоть их 1000 будет, результаты будут близкими. Даю 100%. Именно поэтому у меня одинаково, а у тебя разница в 9 раз. Об этом я догадывался, и написал, что мне просто лень ещё один тест с мелкими файлами проводить.
__________________
There is no thing in this world that is not simple.

Старый 07.12.2016, 06:23
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 53  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Тоесть 6.5 секунд проверялся хеш? Что-то не верится.
Скорее всего загрузка картинки. У меня SSD диск, с него загрузка гораздо быстрее. Так что вполне возможно 6 секунд для загрузки 2 мегабайт + проверка остальных хэшей. Как раз проверкой хэшей и можно объяснить ту незначительную разницу, которую ты получил в двух тестах.

Цитата:
Грузи файлы по 2-10 мб, чтобы получить одинаковые результаты на обоих тестах, и хоть их 1000 будет, результаты будут близкими. Даю 100%.Именно поэтому у меня одинаково, а у тебя разница в 9 раз. Об этом я догадывался, и написал, что мне просто лень ещё один тест с мелкими файлами проводить.
Ты опять споришь) Не будут у тебя даже близко похожие результаты. Я это уже много раз проверял. Могу и с большими файлами тест сделать, без проблем, если ты все еще не веришь. Загручик старгинга грузит картинки по твоему принципу, по очереди. Там это нужно потому, что если грузить сразу все, память очень быстро растет и ее может не хватить на обработку битмапы и создания текстур. На мобилах это очень часто приводит к вылету приложения. Грузится график-пак на телефоне достаточно долго. К примеру на моем Lenovo S90 загрузка график пака в 200+ ассетов, общим объемом около 60 мегабайт, занимает около 20 секунд. Я грузил тот же пак своим загрузчиком во много потоков, и он грузился в несколько раз быстрее, говоря точнее, около 3 секунд, но была проблема, которую я уже описал. На леново все отлично грузилось и обрабатывалось, а на более старом самсунге глэкси эйс 3 вылетало через раз. Поэтому пришлось оставить старлинговский однопоточный.
Но параллельная многопоточная загрузка всегда быстрее однопоточной поочередной, хоть маленькие ты файлы грузишь, хоть большие.

Добавлено через 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.
Старый 07.12.2016, 10:04
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 54  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Ты опять споришь) Не будут у тебя даже близко похожие результаты. Я это уже много раз проверял.
Только что проверил на сотне с лишним абсолютно разных изображений по 3-4 мбайт, результаты идентичны, снова около 7 секунд (может из-за HDD). Использовал предыдущие тесты.
Также проверил на 220-ти изображениях по 1.5 кбайт, и действительно разница в 9 раз. Всё логично.
У загрузки с несколькими загрузчиками есть один довольно неприятный минус - они вешают плеер намертво.
А, кстати. Всё проводил не в AIR, а в плеере.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 07.12.2016 в 10:19.
Старый 07.12.2016, 13:23
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 55  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
Цитата:
У загрузки с несколькими загрузчиками есть один довольно неприятный минус - они вешают плеер намертво.
А можно поподробнее?Загрузка же всегда в отдельных потоках идет.Тоже использую загрузку в N смычков - каких-либо подвисаний не замечено.

Старый 07.12.2016, 16:26
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 56  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
А можно поподробнее?
Не знаю, как на других ПК, но у меня так.

Цитата:
Загрузка же всегда в отдельных потоках идет
Нагуглить ответ на вопрос - действительно ли это так, у меня не получилось.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 07.12.2016 в 16:49.
Старый 07.12.2016, 16:45
zackscript вне форума Посмотреть профиль Отправить личное сообщение для zackscript Найти все сообщения от zackscript
  № 57  
Ответить с цитированием
zackscript
 
Аватар для zackscript

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
ZackMercury, хороши ли есть грузить 2500(тыс) растров одновременно ?? (ну как ты проделал)

Старый 07.12.2016, 16:51
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 58  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Одновременно - нет. Подгружать нужно по необходимости. Вошёл человек в меню - загружаются спрайты/звуки меню, вошёл человек в игру - выгружаются спрайты/звуки меню, загружаются спрайты/звуки уровня.
К тому же, 2.5 ляма растров - это где вы найдёте столько изображений?)))
__________________
There is no thing in this world that is not simple.

Старый 07.12.2016, 17:15
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 59  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Загрузка же всегда в отдельных потоках идет.
Да. У меня никогда плеер не вешался, сколько бы загручиков я ни делал)
Цитата:
Вошёл человек в меню - загружаются спрайты/звуки меню, вошёл человек в игру - выгружаются спрайты/звуки меню, загружаются спрайты/звуки уровня.
То есть ты предлагаешь показывать юзеру полоску загрузки, каждый раз, когда он заканчивает игру и выходит в меню?
Цитата:
Только что проверил на сотне с лишним абсолютно разных изображений по 3-4 мбайт, результаты идентичны, снова около 7 секунд (может из-за HDD). Использовал предыдущие тесты.
Также проверил на 220-ти изображениях по 1.5 кбайт, и действительно разница в 9 раз. Всё логично.
Такого просто не может быть)
И в первом и во втором случае будет разница примерно в 9 раз. Это никак не зависит от HDD. Я бы даже сказал, в первом случае поочередная загрузка будет даже медленнее, так как придется ждать пока каждый из сотни 3 - 4 мегабайтных файлов загрузится поочереди

Вывод: если нет жестких ограничений по памяти (как на мобилах), грузить надо всегда множеством загрузчиков, для максимальной скорости загрузки.
__________________
Ко мне можно и нужно обращаться на ты)

Старый 07.12.2016, 17:16
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 60  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
То есть ты предлагаешь показывать юзеру полоску загрузки, каждый раз, когда он заканчивает игру и выходит в меню?
Ну, если нет аниматора - то можно и полоску. Естественно, внутриигровое меню а-ля пауза не будет выгружаться.
Цитата:
Такого просто не может быть)
Ну как не может быть - видишь ли, у меня такое есть. Таки может, быть может?

Цитата:
Да. У меня никогда плеер не вешался, сколько бы загручиков я ни делал)
Чуть выше гифку смотри.
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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