[personal profile] gdsfh
Подумалась такая штука. Если бы я писал на окамле библиотеку типа json-wheel, но для bson или подобных штук, я бы сразу отрефакторил отдельно создание значений: налепил бы модуль, содержащий тип и функции для построения значений этого типа, и из парсера вызывал бы функции этого модуля. Смысл этого таков: потом, если профайлер скажет, что строить в памяти значение и потом "разрушать" его не слишком эффективно, можно будет лёгким движением препроцессора превратить код парсера в функтор, берущий на вход этот самый модуль с типом и функциями для его создания, и -- вплоть до того, что вообще создавать значение с типом unit, работая в стиле xml sax парсера на сайд-эффектах.

upd1/
Производительность при выделении функций, создающих значения этого типа, не меньше, так как они должны будут заинлайниться (когда модуль статический, известный и не функтор). А вот с разрушением значения, представляющего bson в памяти, с целью генерации bson -- сложнее. Понятно, что в общем случае это будет анаморфизм, но как сделать в частном случае, эффективно и с отсутствием оверхеда в случае, когда работа идёт с "родным" типом -- не знаю пока точно (настолько же точно, как про создание значения). Сообщите, если будут идеи (можно в чятик).

Profile

gdsfh

August 2013

S M T W T F S
    123
45678910
111213 14151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 22nd, 2026 09:28 am
Powered by Dreamwidth Studios