日期:2014-05-17  浏览次数:20722 次

读取—运算—保存,如何速度快?
有几千张图片。一张一张,读取—运算—保存,发现速度很慢,cpu占用率很低。
请问如何提高效率呢。读取2ms。运算4ms。存贮4ms。

------解决方案--------------------
100张一起处理呗。
------解决方案--------------------
先全部读到内存中再处理会不会好点
------解决方案--------------------
通过多线程进行处理,这样CPU利用率就高了
------解决方案--------------------
换个固态硬盘吧。
------解决方案--------------------
硬盘速度不行哦
------解决方案--------------------
最佳解法肯定是GPU并行运算
------解决方案--------------------
小文件太多啦,IO 负载过重。
------解决方案--------------------
文件读取和保存这一块就没得什么优化的,4ms的计算也不是什么高强度的计算,费不着用GPU,基本上你就这样了。
------解决方案--------------------
各自处理各自的话……这明明是并发的经典用例啊
------解决方案--------------------
CPU占用率低只说明一个问题,你的硬盘是瓶颈,跟多线程没有任何关系,因为如果真是多线程的事,CPU使用率至少也应该是1/核心数
------解决方案--------------------
硬盘不给力的话,就算并行也只能提高4/10的运行效率
------解决方案--------------------
还是硬盘不给力
------解决方案--------------------

------解决方案--------------------
引用:
先全部读到内存中再处理会不会好点

肯定会好很多
------解决方案--------------------
引用:
换个固态硬盘吧。

没钱换个毛,你是做硬件批发的么,老JB扯硬件
------解决方案--------------------
引用:
引用:文件读取和保存这一块就没得什么优化的,4ms的计算也不是什么高强度的计算,费不着用GPU,基本上你就这样了。刚又看了下。读取的是jpg,运算是取纯黑白图片的边缘点。保存的是txt格式,xy的坐标。硬盘是大众的7200转。cpu也是i5。看来先要优化下算法。我是先是横找,比较左后两个点,不同就取出来。再竖找比较上下两个点,不同取出来……

图片是6000多张,写的txt是同一个文件吗?
如果是同一个文件,则不要读一次运算一次写一次,而是读一次运算一次把结果保存在StringBuilder里,最后统一一次性写到txt里