![]() |
1
1
我怀疑,如果您可以在一个查询中从数据库中提取一组行,并并行处理每个行,查找关键字,然后在一个步骤中将批保存回磁盘,那么您将看到显著的好处。如果您一个接一个地选择并以线性方式处理它们,您将看到并行处理的好处微乎其微。 我认为你只需要尝试两种方法,并测量差异,看看它是否真的适合你。显然,在单核机器上它不会有什么不同,但是一个8核机器只处理两个文件也不会看到任何显著的好处,除非每个文件的关键字搜索花费了很长时间,然后并行执行它们会再次获得好处。:)我认为你最好的选择是尝试一些不同的技巧,找出对你和你的处境最有利的方法。 |
![]() |
2
1
数据库和磁盘的I/O性能将比处理器速度慢得多,因此您可能不会看到并行化带来的任何明显好处。 |
![]() |
3
0
我会采用生产者-消费者的方法( http://en.wikipedia.org/wiki/Producer-consumer_problem ): 一个线程查询您的数据库(如果可能的话,通过某种类型的光标,这样您可以一个接一个地进行查询),并将每一行放在一个缓冲区中。 另一个线程(如果搜索需要大量处理,则可能不止一个线程)正在获取数据库的一行(使用HTML blob)并处理搜索。 在这种情况下,您可以同时进行查询和处理。 我不相信您会因为一个很可能查询比处理花费的时间长的事实而获得很大的性能提升。问题是查询部分以磁盘读取为瓶颈。最后,您的磁盘性能很可能会限制您的总体性能。 为了检查是否是这样,可以使用多个生产者(即多个线程查询数据库)来执行生产者/消费者操作。 希望能有所帮助。 爱德华多 |
![]() |
drainzerrr · Go锁定结构的一部分 7 年前 |
![]() |
Azim · 使用java 8并行处理图像 7 年前 |
|
user8005765 · Karatsuba-多项式与CUDA相乘 7 年前 |
![]() |
Adi · 并行读取大型XSLT字符串 7 年前 |
![]() |
A.J · 同时运行两个python文件 7 年前 |
![]() |
Kristofer · 当索引设置为私有时,如何确保访问缓冲区是私有的 7 年前 |