复杂任务的两种批处理模式
2007-01-11 10:47
225 查看
给大胃王 上三份饺子,三份粥,三只烤乳猪,他会怎么选择?
1. 轮换式:吃盘饺子,喝碗粥,吃只猪 --> 吃个饺子,喝碗粥,吃只猪 --> 吃个饺子,喝碗粥,吃只猪
2. 流水线式: 吃三盘饺子 --> 吃三碗粥 --> 吃三只猪
如果我们定义: 一盘饺子 +一碗 粥 + 一只烤猪 = 一份套餐
那么,如果食客选择第一种吃法,那它就吃了三份套餐,从任务定义的角度,我们的设计可以更简洁
如果他选择第二种吃法,设计上不那么简明了,但效率可能会好很多。因为吃第一盘饺子的器皿可以马上用来吃第二盘、第三盘,吃粥的碗也是一样,整顿饭一共要“端碗/盘”三次。而对第一种吃法而言,他吃完第一盘饺子后,要换用粥碗去吃第一碗粥,然后用换另一种食器去吃猪,接着又换回盘来吃饺子...... 整顿饭它要“端碗/盘”九次
或许你认为我在说废话。如果我们把上面的 吃东西 替换为 下载东西, 把 端/放碗 换成 建立/释放 连接, 你可能就不会这样想了
1. 轮换式:吃盘饺子,喝碗粥,吃只猪 --> 吃个饺子,喝碗粥,吃只猪 --> 吃个饺子,喝碗粥,吃只猪
2. 流水线式: 吃三盘饺子 --> 吃三碗粥 --> 吃三只猪
如果我们定义: 一盘饺子 +一碗 粥 + 一只烤猪 = 一份套餐
那么,如果食客选择第一种吃法,那它就吃了三份套餐,从任务定义的角度,我们的设计可以更简洁
如果他选择第二种吃法,设计上不那么简明了,但效率可能会好很多。因为吃第一盘饺子的器皿可以马上用来吃第二盘、第三盘,吃粥的碗也是一样,整顿饭一共要“端碗/盘”三次。而对第一种吃法而言,他吃完第一盘饺子后,要换用粥碗去吃第一碗粥,然后用换另一种食器去吃猪,接着又换回盘来吃饺子...... 整顿饭它要“端碗/盘”九次
或许你认为我在说废话。如果我们把上面的 吃东西 替换为 下载东西, 把 端/放碗 换成 建立/释放 连接, 你可能就不会这样想了
相关文章推荐
- 通过继承nsoperation的方法--处理复杂任务
- cherrypy + eventlet 完成复杂的异步任务处理
- tornado thread 任务处理模式
- 高性能复杂事件处理---模式匹配
- 【10-2】复杂业务状态的处理(从状态者模式到FSM)
- NSOperation使用系统提供子类的方法--处理复杂任务
- 一种Furture模式处理请求中循环独立的任务的方法
- AsyncTask 处理复杂多个任务。
- 复杂事件处理(CEP)——事件模式,规则及约束
- 复杂业务状态的处理:从状态模式到 FSM
- 使用JDK1.8 CompletableFuture异步化任务处理
- spring异步任务处理 @Async的配置和使用【可以提高业务吞吐量】
- 个人对于golang的goroutine并发处理任务时的理解
- Activity的启动模式及任务栈的概念简要复习
- Quartz的Misfire处理规则 错过任务执行时间的处理机制
- java设计模式----模版模式+内部类+设计时间事件处理框架
- 复杂事件处理(CEP)的理解(上)
- java servlet处理微信企业号回调模式
- 使用 ibatis 处理复杂对象数据关系的实例
- [Android Pro] Android异步任务处理之AsyncTaskLoader的使用