提高效率的诀窍:分辨任务属性——并行与串行(三)

byXIAOLAIon2009/02/13·12 COMMENTS

in把时间当作朋友

把自己变成一个“多任务操作系统”的另外一个重要策略是学会拆分任务,即把一个任务划分成若干个子任务。一旦一个任务被划分成若干个子任务之后,就可以仔细甄别它们之间的关系到底是串行的呢,还是并行的?

华罗庚先生曾经用“烧水泡茶”为例子说明过这个问题。

  • 先做好准备工作,洗开水壶、茶壶、茶杯,拿茶叶。一切就绪后,灌水,烧水,等水开了泡茶喝。
  • 洗净开水壶后,灌水,烧水。等水开了之后,洗茶壶、茶杯,拿茶叶,泡茶喝。
  • 洗净开水壶后,灌水,烧水。利用等待水开的时候,洗茶壶、茶杯,拿茶叶,等水开了泡茶喝。

哪一种方案更好呢?

第三种方案之所以优于前两种方案,原因很简单,因为有些任务被并行处理掉了。那之所以可以如此优化的前提是“大任务被划分成足够多有不太多的小任务,因此才可以分辨出其中的哪些可以并行”——所谓的“优化”其实是很简单的。

如果不做划分,事实上生活中大多数人还真的可能是如此的,那么就只有一个任务“喝茶”。然而,如果哪怕粗略划分一下的话,就知道起码可以划分为两个子任务:烧水,泡茶。但这样还是很粗略,因为划分之后的两个子任务是串行关系,先后顺序明了,没有什么可以优化的余地。然而如果再继续划分子任务的话,就可能找得出有“并行”关系的任务,进而提高效率。

如果你在类似麦当劳之类的快餐店排过队就知道了,有很多人直到轮到自己的时候才抬头看墙上的菜单,花费很长时间才做出选择——事实上,他完全可以把排队和选菜并行,这样的话,轮到他的时候其实几句话之后就可以端菜去吃了。有一次我特意排了十个人的长队,结果,没有一个不是轮到他才选菜的。后来我就决定以后除非无需排队或者排队的人很少,我绝不在类似的餐馆吃饭,不然会被迫浪费时间的。

尽管很简单,但需要反复应用才能把这样简单的思考模式变成习惯。一旦养成善于拆分任务的习惯,效率就“不知不觉”提高了。

results matching ""

    No results matching ""