通过套接字下载多个文件还是单个大文件并解压缩?

6
我需要让客户下载30MB的文件。
以下是设置:
1.它们由3000个小文件组成。
2.通过tcp bsd套接字下载。
3.它们在客户端的数据库中存储,因为它们被下载。
4.服务器可以将所有必要的文件存储在内存中。(服务器端没有文件访问)
我没有看到很多情况下客户端下载如此大量的文件,我怀疑这是由于服务器端的文件访问。我也担心多路复用器(select/epoll)会被过多的网络请求处理而不堪重负。(我需要担心这个吗?)
基于以上怀疑,我将3000个文件压缩成了30个文件。(总体大小变化不大,因为这些文件已经是压缩文件(png))
测试显示,下载3000个文件比下载和解压缩30个文件快25%。(我怀疑这是因为客户设备无法在解压缩和插入数据库时下载,我正在手持设备上测试.. iPhone..)(我将解压缩+DB操作与网络代码分开线程,但是DB操作似乎占据了整个系统。我进行了一些剖析,发现解压缩不需要太长时间,DB插入需要时间。在服务器端,文件被压缩并预先放置在内存中。)
我正在考虑切换回下载3000个文件,因为它对客户端更快。
我想知道其他有经验的网络人士对这两种策略的看法,
1.许多小数据
2.少量大数据和解压缩。
编辑:
对于有经验的iPhone开发人员,我正在使用NSOperationQueue线程化DB操作。
NSOperationQueue是否真正线程化?
我非常怀疑它的性能。
- 我尝试过posix线程,没有明显的区别..
1个回答

1

我正在回答自己的问题。

事实证明,在客户端一次性将许多图像插入sqlite数据库需要很长时间,因此,网络数据包在传输过程中无法快速传递到客户端。

http://www.sqlite.org/faq.html#q19

在我采纳了FAQ中的建议以加速“大量插入”之后,它实际上比“单独下载多个文件”的策略表现更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接