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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.03.2016, 12:29
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 21  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
К вопросу о моделях и парсерах - single responsibility же =) Модель делает свою, только одну работу, парсер делает свою и тоже только одну работу. Парсер может создавать модель, может принимать готовую и наполнять ее данными, но точно не сама модель должна заниматься парсингом данных.
Другой вопрос что при изменении формата передаваемых данных, нам все равно приходится рефакторить и модель, и парсер. Но это нормально, это не нарушает SOLID
__________________
...вселенская грусть

Старый 01.03.2016, 14:12
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 22  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
gloomyBrain, да, эта идея понятна. парсер от модели отделил
попробовал ванилу, время парсинга у меня увеличилось в 3 раза, при том что сама лабиа с зависимостями дала около 100кб , не совсем lightweight )
10000 объектов вида
Код AS3:
{ num1:1, num2:2, num3:4, num4:4, str1:'43243' }
мой парсер 166мс
ванилла 466мс

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Очень сильно понравилась мысль
Цитата:
Сообщение от Tails Посмотреть сообщение
Я вот о чём думаю, так ли важно отделять структуру передаваемых данных? Ведь она фактически описывает структуру модели.
Ну вот сменится у тебя структура передаваемых данных, но будет "описывать структуру модели", но по-другому. Ах, тогда нужно менять встроенный "парсер" в модели. Это тебе надо? А так накинул другой внешний парсер взамен предыдущего и не паришься. Ну переехала твоя модель CurrencyData, UserData, BuildingData (придумай ещё что-нибудь) в другой проект. Переписал парсеры и все робит, аж дух захватывает. Особенно в составных моделях, a.k.a. "древесных". Когда парсеры ходят по дереву входных данных (иногда такое получается, если на сервер бутылочку проставишь и они выкатят так, как ты хочешь) и фигачат в твою составную модельку.
И ещё раз обращаю внимание, что "структура передаваемых данных" !== структуре данных в модели. Адаптировать то, что пришло извне призван конкретный парсер. Ну, не парсер он нифига, а некий адаптер входных данных в формат модели. Я его раньше называл "то, что делает из серверного разноброда конфетку".

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

Добавлено через 11 минут
Цитата:
Сообщение от faraday Посмотреть сообщение
мой парсер 166мс
ванилла 466мс
Я сегодня в рамках работы над своим 2d движком решил свою машинку попросить скопировать из одного места в другое около 64к треугольников (~ 5 МБ сырых байтов) с помощью domain memory. Меня приятно поразила скорость релиз сборки под релизным плеером. 2 ms! Карл! За 2 миллисекунды скопировалось 5 Мб из одной области памяти в другую. Ты в курсе, что на Spectrum это невозможно? Вот откуда твои сумасшедшие latency на производстве хз, наверное, 10-20 кБ данных?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 02.03.2016, 10:33
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 24  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,251
Записей в блоге: 6
Ладно, вы меня вразумили, спасибо.
__________________
Дети не должны знать о своих родителях

Старый 05.03.2016, 20:31
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 25  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
хотелось бы посмотреть на пример данных, которые парсятся целых пол-секунды, хотя в целом у меня по оптимизации ваниллы ещё достаточно много работы, но кейс интересен, хотя чудится мне что речь о дебажном плеере.
__________________
Блог, Twitter
Брюзга.

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

Регистрация: Apr 2009
Сообщений: 409
Нет, версия релизная , результат 0.332, 0.012, почти в 30 раз дольше. если отключить кеширование ванилы, дольше станет в 300 раз).
Код AS3:
	public class TestModel
	{
		public var num1:Number;
		public var num2:Number;
		public var num3:Number;
}
Код AS3:
			var test:Array = [];
			for (var i:int = 0; i < 10000; i++)
				test[i] = { num1:Math.random(), num2:Math.random(), num3:Math.random() }
			Clock.showInterval();
			var results:Array = [];
			for (var i:int = 0; i < test.length; i++) {
				var data:Object = test[i];
				var model:TestModel = extract(data, TestModel);
				results[i]=(data);
			}
			var t1:Number=Clock.showInterval('vanilla');
			for (var i:int = 0; i < test.length; i++) {
				var data:Object = test[i];
				var model:TestModel = new TestModel()
				model.num1 = data.num1;
				model.num2 = data.num2;
				model.num3 = data.num3;
				results[i]=(data);
			}
			var t2:Number=Clock.showInterval('direct');
			Layers.showLoad(t1 + ' ' + t2);

Старый 06.03.2016, 12:25
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 27  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
ну, да, "крайне показательный" тест.
__________________
Блог, Twitter
Брюзга.

Старый 06.03.2016, 13:13
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 28  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
а чем не показательный? на боевых данных картина такая же, 50кб парсятся пол секунды, но модеей там много чтобы все их тут приводить

Старый 06.03.2016, 16:36
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 29  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Начнём с того, что синтетические тесты подобного рода не являются показательными ни в чем, они выдают попугаев, так как приведённые данные для парсинга не отображают реальное положение дел, пол-секунды на обработку такого количества данных - мелочи, которые даже в продакшне не влияют ни на что.

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

Третье, я не знаю чьей версией вы пользуетесь, Jonny Reeves'a или моей, где убраны тяжеловесные и медленные зависимости зависимости.
__________________
Блог, Twitter
Брюзга.

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

Регистрация: Apr 2009
Сообщений: 409
https://github.com/jonnyreeves/as3-vanilla я только ее нашел, да, с зависимостями от commonLibs. а не подскажете где вашу найти и посмотреть?)

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

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

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


 


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


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