qicosmos / rest_rpc

modern C++(C++11), simple, easy to use rpc framework
MIT License
1.66k stars 365 forks source link

unpack内存优化 #71

Open chisheng opened 2 years ago

chisheng commented 2 years ago

祁工: 嵌入式设备内存不大,所以特别关注内存消耗,还是以自带person为例,如果name的大小是10M,那么在服务端调用处理函数的时候,会瞬时消耗40M内存,原因是unpack调用msgpack::unpack时使用的默认参数,object_handle对str类型数据是复制不是引用,我看现在的流程,buffer的生命周期是大于object_handle的,能不能使用下边的接口,让unpack_reference_func固定返回true,强制使用引用模式,这样消耗的内存就是20M了。我测试了下,没有发现问题。

void unpack( object_handle& result, const char data, std::size_t len, unpack_reference_func f = nullptr, void user_data = nullptr, unpack_limit const& limit = unpack_limit());

qicosmos commented 2 years ago

可以增加一个这样的接口,你提个pr如何?