奔 奔雷手 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-04 #1 [red][h2]并行去处理200条命令,既能节省内存又能已最少的时间,怎么去实现,有几种方法[/h2][/red]
张 张辉明 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-04 #3 单个PC中,MS里单个进程中。只能开线程吧。 要想真正实现并行处理200条命令,只有加200CPU了。 但目前一般情况下为2个CPU,所以并没意义,因为最终还是依次一个个处理。 一般情况下,开CPU个数+1个线程来处理数据。这个效率比较高了。
单个PC中,MS里单个进程中。只能开线程吧。 要想真正实现并行处理200条命令,只有加200CPU了。 但目前一般情况下为2个CPU,所以并没意义,因为最终还是依次一个个处理。 一般情况下,开CPU个数+1个线程来处理数据。这个效率比较高了。
B ball_cao Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-05 #5 并行一定能节省运行的总时长么?非也! 如果你的200条命令使用的是同一系统资源,那么并行只会增加时间而不能减少。 例如你要做200次阶乘。假设每个命令执行的市场是1。这都是cpu操作,这时你启动10个线程,每个线程运行20个命令。所有命令执行完成的时间是大于200的,因为cpu还要付出时间做线程调度。 但如果你做200个命令,其中100个是用于到磁盘上取数每个操作时长为n(n>1),剩下100个是计算取出数据的阶乘每个操作时长为1。那么你可以使用两个线程,一个线程用于将磁盘数据读入队列,另一个线程用于计算队列中数据的阶乘。那么你的总时长可以变成100n+1 而串行计算的时长是100n+100。 综上所述 并行能够减少时间是有条件的。节省空间亦然,也需要根据具体的命题具体设计和分析
并行一定能节省运行的总时长么?非也! 如果你的200条命令使用的是同一系统资源,那么并行只会增加时间而不能减少。 例如你要做200次阶乘。假设每个命令执行的市场是1。这都是cpu操作,这时你启动10个线程,每个线程运行20个命令。所有命令执行完成的时间是大于200的,因为cpu还要付出时间做线程调度。 但如果你做200个命令,其中100个是用于到磁盘上取数每个操作时长为n(n>1),剩下100个是计算取出数据的阶乘每个操作时长为1。那么你可以使用两个线程,一个线程用于将磁盘数据读入队列,另一个线程用于计算队列中数据的阶乘。那么你的总时长可以变成100n+1 而串行计算的时长是100n+100。 综上所述 并行能够减少时间是有条件的。节省空间亦然,也需要根据具体的命题具体设计和分析
小 小雨哥 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-05 #6 买个2008年6月23日以后出品的最新型号显卡(GF200系列或HD4800系列),直接使用显卡里的运算单元,可以并行执行300到800条命令。如何调用执行,可以去这些显卡公司的技术支持论坛看看。
L luoyanqing119 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-05 #7 运用多线程本来很好,但是如果你只是单核,那么对于问题的解决没有多大帮助.