未验证 提交 61bc89d0 编写于 作者: J Jiawei Wang 提交者: GitHub

Merge branch 'develop' into cube_062

......@@ -12,7 +12,7 @@ BRPC-Server会尝试去JSON字符串中再去反序列化出Proto格式的数据
### Http+protobuf方式
各种语言都提供了对ProtoBuf的支持,如果您对此比较熟悉,您也可以先将数据使用ProtoBuf序列化,再将序列化后的数据放入Http请求数据体中,然后指定Content-Type: application/proto,从而使用http/h2+protobuf二进制串访问服务。
实测随着数据量的增大,使用JSON方式的Http的数据量和反序列化的耗时会大幅度增加,推荐当您的数据量较大时,使用Http+protobuf方式,后续我们会在框架的HttpClient中增加该功能,目前暂没有支持。
**理论上讲,序列化/反序列化的性能从高到底排序为:protobuf > http/h2+protobuf > http**
......@@ -109,7 +109,7 @@ repeated int32 numbers = 1;
### Http压缩
支持gzip压缩,但gzip并不是一个压缩解压速度非常快的方法,当数据量较小时候,使用gzip压缩反而会得不偿失,推荐至少数据大于512字节时才考虑使用gzip压缩。
支持gzip压缩,但gzip并不是一个压缩解压速度非常快的方法,当数据量较小时候,使用gzip压缩反而会得不偿失,推荐至少数据大于512字节时才考虑使用gzip压缩,实测结果是当数据量小于50K时,压缩的收益都不大
#### Client请求的数据体压缩
......
文件模式从 100644 更改为 100755
......@@ -34,10 +34,7 @@ test_reader = paddle.batch(
for data in test_reader():
new_data = np.zeros((1, 13)).astype("float32")
new_data[0] = data[0][0]
lst_data = []
for i in range(200):
lst_data.append(data[0][0])
fetch_map = client.predict(
feed={"x": lst_data}, fetch=fetch_list, batch=True)
feed={"x": new_data}, fetch=fetch_list, batch=True)
print(fetch_map)
break
......@@ -57,6 +57,7 @@ def data_bytes_number(datalist):
else:
raise ValueError(
"In the Function data_bytes_number(), data must be list.")
return total_bytes_number
class HttpClient(object):
......@@ -141,6 +142,15 @@ class HttpClient(object):
else:
self.http_timeout_ms = http_timeout_ms
def set_ip(self, ip):
self.ip = ip
def set_service_name(self, service_name):
self.service_name = service_name
def set_port(self, port):
self.port = port
def set_request_compress(self, try_request_gzip):
self.try_request_gzip = try_request_gzip
......@@ -294,9 +304,10 @@ class HttpClient(object):
raise ValueError(
"feedvar is string-type,feed, feed can`t be a single int or others."
)
total_data_number = total_data_number + data_bytes_number(
data_value)
# 如果不压缩,那么不需要统计数据量。
if self.try_request_gzip:
total_data_number = total_data_number + data_bytes_number(
data_value)
Request["tensor"][index]["elem_type"] = elem_type
Request["tensor"][index]["shape"] = shape
Request["tensor"][index][data_key] = data_value
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册