|
|
|||||
К вопросу о моделях и парсерах - single responsibility же =) Модель делает свою, только одну работу, парсер делает свою и тоже только одну работу. Парсер может создавать модель, может принимать готовую и наполнять ее данными, но точно не сама модель должна заниматься парсингом данных.
Другой вопрос что при изменении формата передаваемых данных, нам все равно приходится рефакторить и модель, и парсер. Но это нормально, это не нарушает SOLID
__________________
...вселенская грусть |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
gloomyBrain, да, эта идея понятна. парсер от модели отделил
попробовал ванилу, время парсинга у меня увеличилось в 3 раза, при том что сама лабиа с зависимостями дала около 100кб , не совсем lightweight ) 10000 объектов вида мой парсер 166мс ванилла 466мс |
|
|||||
.
|
Очень сильно понравилась мысль
Цитата:
И ещё раз обращаю внимание, что "структура передаваемых данных" !== структуре данных в модели. Адаптировать то, что пришло извне призван конкретный парсер. Ну, не парсер он нифига, а некий адаптер входных данных в формат модели. Я его раньше называл "то, что делает из серверного разноброда конфетку". Добавлено через 2 минуты И да, мои модельки не имеют зависимости он протоколов и форматов данных. У них свой формат, который они ожидают. Добавлено через 11 минут Я сегодня в рамках работы над своим 2d движком решил свою машинку попросить скопировать из одного места в другое около 64к треугольников (~ 5 МБ сырых байтов) с помощью domain memory. Меня приятно поразила скорость релиз сборки под релизным плеером. 2 ms! Карл! За 2 миллисекунды скопировалось 5 Мб из одной области памяти в другую. Ты в курсе, что на Spectrum это невозможно? Вот откуда твои сумасшедшие latency на производстве хз, наверное, 10-20 кБ данных? |
|
|||||
хотелось бы посмотреть на пример данных, которые парсятся целых пол-секунды, хотя в целом у меня по оптимизации ваниллы ещё достаточно много работы, но кейс интересен, хотя чудится мне что речь о дебажном плеере.
|
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Нет, версия релизная , результат 0.332, 0.012, почти в 30 раз дольше. если отключить кеширование ванилы, дольше станет в 300 раз).
public class TestModel { public var num1:Number; public var num2:Number; public var num3:Number; } 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); |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
а чем не показательный? на боевых данных картина такая же, 50кб парсятся пол секунды, но модеей там много чтобы все их тут приводить
|
|
|||||
Начнём с того, что синтетические тесты подобного рода не являются показательными ни в чем, они выдают попугаев, так как приведённые данные для парсинга не отображают реальное положение дел, пол-секунды на обработку такого количества данных - мелочи, которые даже в продакшне не влияют ни на что.
Второе, это то, что ванилла это комплексный инструмент, предназначенный для парсинга сложных данных а не простых моделей с тремя интовыми полями. То есть для парсинга структур хотя бы с двумя видами вложенных VO, на деле обычно больше, с кэшируемым результатом рефлексии исходных классов (вручную писать парсеры такого рода - так себе удовольствие). К тому же прямая запись из поля в поле всегда будет быстрее чем экстракт с помощью ваниллы :-) Третье, я не знаю чьей версией вы пользуетесь, Jonny Reeves'a или моей, где убраны тяжеловесные и медленные зависимости зависимости. |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
https://github.com/jonnyreeves/as3-vanilla я только ее нашел, да, с зависимостями от commonLibs. а не подскажете где вашу найти и посмотреть?)
|
Часовой пояс GMT +4, время: 14:53. |
|
« Предыдущая тема | Следующая тема » |
|
|