LINUX.ORG.RU

История изменений

Исправление 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 так, что вместо вызова универсальной функции там проставляется этот „временный тип“, и адреса на „переменные“ все кэшируются. При последующих запросах проверяется (не спрашивай как), не изменилась ли структура, и дальше используются кэшированные значения. Это сильно всё ускоряет. Надо на Швабр запилить статью об этой оптимизации.