流回HTTP-Response的最佳方法是什么?

时间:2016-02-14 01:44:54

标签: java stream streaming outputstream printwriter

我有一个REST服务,可能需要从数据库返回超过1000,000行。我是通过打开输出流来完成的。基本上我从HTTP-RESPONSE获取printwriter并将其从数据库中传回,而不是将所有内容存储在内存中然后返回。

像这样: -

=CONCATENATE(ROUND(F2/4.2,0),"/",ROUND((F2/4.2)/7,0))

我的问题是,我们通过冲洗桶获得任何性能提升吗?比如在stringbuffer中存储5000行然后将其刷新而不是每行刷新一次。

1 个答案:

答案 0 :(得分:0)

每次刷新都会使系统通过所有缓冲区“刷新”数据到网络层,或者它依赖于您正在使用的库,甚至可能阻塞,直到远程端确认数据已到达。这意味着在I / O阻塞中花费了大量时间,即“它将非常慢”。

我建议在这里删除flush,制作一个相当小的BufferedOutputStream(512-8192字节)并在其上创建PrintWriter并使用不同的缓冲区大小执行测量。