История изменений
Исправление
stevejobs,
(текущая версия)
:
это не организация, а один из пет-проектов :) Хотя если получится, продадим организации
ну сейчас же основные методы передачи данных - это XML и JSON (причем JSON куда хуже, т.к. у него нет схемы, читай «черт знает что прилетело). И код современного микросервиса начинает на 60% быть заполнен всяким говном типа - прилетел JSON сконвертим его в объект, объект чуточку поправим сконвертим в JSON отправим соседнему микросервису чтобы он сконвертил его снова в объект... и так туда сюда обратно до бесконечности. Скоро разработчик начинает чувствовать себя машинкой по написанию JSON/XML и CRUDов =) Поэтому можно сразу смириться с неизбежным и сделать этот парсинг частью языка (но не как в XSLT, а по-нормальному, в императивной манере)
на самом деле можно это оптимизировать. Обычно метод выполняется с XML/JSON примерно одинаковой структуры. Эту структуру можно считать „анонимным временным типом“. Когда выполняется первый вызов метода, профилировщик изменяет AST так, что вместо вызова универсальной функции там проставляется этот „временный тип“, и адреса на „переменные“ все кэшируются. При последующих запросах проверяется (не спрашивай как), не изменилась ли структура, и дальше используются кэшированные значения. Это сильно всё ускоряет. Надо на Швабр запилить статью об этой оптимизации.
Исходная версия
stevejobs,
:
это не организация, а один из пет-проектов :) Хотя если получится, продадим организации
ну сейчас же основные методы передачи данных - это XML и JSON (причем JSON куда хуже, т.к. у него нет схемы, читай «черт знает что прилетело). И код современного микросервиса начинает на 60% быть заполнен всяким говном типа - прилетел JSON сконвертим его в объект, объект чуточку поправим сконвертим в JSON отправим соседнему микросервису чтобы он сконвертил его снова в объект... и так туда сюда обратно до бесконечности. Скоро разработчик начинает чувствовать себя машинкой по написанию JSON/XML и CRUDов =)
на самом деле можно это оптимизировать. Обычно метод выполняется с XML/JSON примерно одинаковой структуры. Эту структуру можно считать „анонимным временным типом“. Когда выполняется первый вызов метода, профилировщик изменяет AST так, что вместо вызова универсальной функции там проставляется этот „временный тип“, и адреса на „переменные“ все кэшируются. При последующих запросах проверяется (не спрашивай как), не изменилась ли структура, и дальше используются кэшированные значения. Это сильно всё ускоряет. Надо на Швабр запилить статью об этой оптимизации.