社区
Java SE
帖子详情
多线程下载速度反而更慢
安卓机器人
2012-04-01 08:56:32
我做是手机项目,尝试下载20M的文件,在wifi的网络环境下,单线程花的时间是5分18秒,双线程花的时间是6分46秒。
可能多线程时间会更长,请问是这是为什么?有什么方法可以提高下载速度吗?
...全文
395
11
打赏
收藏
多线程下载速度反而更慢
我做是手机项目,尝试下载20M的文件,在wifi的网络环境下,单线程花的时间是5分18秒,双线程花的时间是6分46秒。 可能多线程时间会更长,请问是这是为什么?有什么方法可以提高下载速度吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
原来缘来
2012-04-05
打赏
举报
回复
换个双核手机试试
shift3325
2012-04-04
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
预先填充的话说白了就是先占坑。第一次 HTTP 请求时通过 Content-Length 获取资源的大小,预先创建一个这样大小的文件,先全部填充为字节 0
如果开启 5 个线程,文件大小是 1000 的话,那么 0~999 字节使用线程 1 通过 Range 去下载,1000~1999 字节依次类推。线程 1 从该文件 0 位置开始写入,线程 2 从该文件 1000 处开始写入。
[/Quote]
++
安卓机器人
2012-04-04
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
预先填充的话说白了就是先占坑。第一次 HTTP 请求时通过 Content-Length 获取资源的大小,预先创建一个这样大小的文件,先全部填充为字节 0
如果开启 5 个线程,文件大小是 1000 的话,那么 0~999 字节使用线程 1 通过 Range 去下载,1000~1999 字节依次类推。线程 1 从该文件 0 位置开始写入,线程 2 从该文件 1000 处开始写入。
[/Quote]
对,我用的就是这种方式。
火龙果被占用了
2012-04-02
打赏
举报
回复
预先填充的话说白了就是先占坑。第一次 HTTP 请求时通过 Content-Length 获取资源的大小,预先创建一个这样大小的文件,先全部填充为字节 0
如果开启 5 个线程,文件大小是 1000 的话,那么 0~999 字节使用线程 1 通过 Range 去下载,1000~1999 字节依次类推。线程 1 从该文件 0 位置开始写入,线程 2 从该文件 1000 处开始写入。
火龙果被占用了
2012-04-02
打赏
举报
回复
不预先填充的话,那用多个线程下回来的每一块数据怎么拼起来呢?
安卓机器人
2012-04-01
打赏
举报
回复
继续顶一个,谢谢楼上两位大侠的热心。
安卓机器人
2012-04-01
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
你多线程下载时采用的什么方式?预先文件填充数据么?有使用 Range 么?
你好像什么都没说,无能为力!
[/Quote]
有使用Rangle,不清楚预先文件填充方式是什么,我用的是Java的HttpURLConnection,而不是apache的HttpPost方法。
火龙果被占用了
2012-04-01
打赏
举报
回复
你多线程下载时采用的什么方式?预先文件填充数据么?有使用 Range 么?
你好像什么都没说,无能为力!
火龙果被占用了
2012-04-01
打赏
举报
回复
也没差太多啊?
龙四
2012-04-01
打赏
举报
回复
1、网速有没有达到瓶颈
2、手机是不是多核,系统对多任务的支持度
安卓机器人
2012-04-01
打赏
举报
回复
自己顶一个,环境大家积极讨论问题。
python
多线程
代码运行速度
更慢
-原因解析
写出了正确的
多线程
代码,运行速度反而比单线程慢很多,原来是由于GIL(Global Interpreter Lock)! GIL 是Cpython(Python语言的主流解释器)特有的全局解释器锁(其他解释器因为有自己的线程调度机制,所以没有GIL机制),GIL锁定Python线程中的CPU执行资源。线程在执行代码时,必须先获得这把锁,才获得CPU执行代码指令。如果这把锁被其他线程占用,该线程就只...
为什么Python
多线程
反而
更慢
了?
原因就在于 GIL ,在 Cpython 解释器(Python语言的主流解释器)中,有一把全局解释锁(Global Interpreter Lock),在解释器解释执行 Python 代码时,先要得到这把锁,意味着,任何时候只可能有一个线程在执行代码,其它线程要想获得 CPU 执行代码指令,就必须先获得这把锁,如果锁被其它线程占用了,那么该线程就只能等待,直到占有该锁的线程释放锁才...
磁盘IO单线程顺序写时最快的,如果
多线程
写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢...
磁盘IO单线程顺序写时最快的,如果
多线程
写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢(1) 读写最好还是不要
多线程
,硬盘读写的速度有限,单线程时已经满负荷了,
多线程
又会增加线程之间的切换,会增加时间。 如果想增加读写速度,应该增加硬盘,做raid(2)首先是硬盘的写入是串行的,CPU的计算才是并行的,如果你偏重计算那么
多线程
能提高,要不怎么叫做并行计算呢; ...
python日记(一):为什么我的
多线程
速度反而不如单线程?
Background(废话,可以跳过不看) 今天使用在实际操作中,需要求一个矩阵中每个结点对之间相似度的操作,矩阵的大小大概有17000+,所以一共需要计算结点对17000×17000=?????辣么老多个。计算了一下大概需要三个小时以上。 然后就想到了以前用过的
多线程
爬虫,简直爽到飞起,所以想着用
多线程
可以是不是可以提高循环计算的速度?然后就动手写了一个
多线程
,但是发现速度甚至不及单线程,甚至还要
更慢
。Excuse Me???? 然后就去查看了一下别的大佬怎么讲。 python线程原理(敲黑板) 下面引入
【java
多线程
】
多线程
为什么跑的比单线程还要慢?!
问:
多线程
是不是能加快处理速度? 解析: 在使用
多线程
时,一定要知道一个道理:处理速度的最终决定因素是CPU、内存等,在单CPU(无论多少核)上,分配CPU资源的单位是“进程”而不是“线程”。 我们可以做一个简单的试验: 假设我要拷贝100万条数据,单CPU电脑,用一个进程,在单线程的情况下,CPU占用率为5%,耗时1000秒。那么当在这个进程下,开辟10个线程同时去运行,是不是CPU占用...
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章