“如何分配或者优化你的任务”来提高效率

“如何分配或者优化你的任务”来提高效率。

拿CPU为例(多核的CPU除外),CPU在一个时间段内其实只能做一件事,因为它只有一个个体,一个时空。对CPU来说,它只不过是离散地按顺序执行一系列的互不相干的基础运算而已,每一个运算都耗费一个很短的时间段,所有的运算在CPU看来它们之间并无任何联系。多任务操作系统把一个长的时间段划分成很多短小的时间片,每个时间片只让CPU执行一个进程(process)的任务,A的时间到了就暂时挂起,执行B进程的任务,B完了继续往后轮,然后循环,这样连续起来就好像是它同时运行着很多进程,实际上它就像是视觉暂留一样。这就像是一个负责盖章审批的领导,你递上去申请书,别人也递上去申请书,他总是要一个一个的挨个看并且盖章,早晚有一天会轮到你那份申请的,这个过程我们无法优化,这是底层机制的执行方式。而对我们来说,程序,也就是人的智慧,是可以优化的,有的程序执行效率高,反应快而灵敏,有的程序迟钝缓慢,还总是出错,这里面就体现了程序员的智慧水平。一个程序在操作系统中运行的时候往往就是一个进程(process),或几个互相独立又有可能互相沟通或依赖的进程,每个进程内部还可以生成许多线程(thread)来同时执行几个并行运算,线程之间如何完美地协调就是编程的最大挑战了,有些线程互不依赖,而有些则需要互相依赖和等待对方的结果返回。有些数据运算只能串行处理因为每一步的运算都需要等待上一步的结果,而有些数据运算经过算法优化则可以适当的安排并行执行。许多优秀程序正是由于程序员采用了高效的算法和数据组织结构,充分的利用了计算机的全部性能达到较高的执行效率。

人也类似,我们在一秒钟之内只能够做一件事(指头脑活动),当然你可以边擦地边学习,边炒菜边听歌,这是因为人有五官、四肢,但是人只有一个大脑,它同一时刻只能集中处理一个信息,三心二意带来的必定是效率的低下,没有什么方法可以比集中精力效率更高的了。人脑是串行处理任务的,但是人脑又是会分配任务的,我们可以把一件事情拆开成很多小份,划分成许多阶段来分别完成,这是人类思维的本能,也就是将一个事物进行分析并归纳分类的能力。比如拿学英语这件事情来说,可以把学习过程分成“听、说、读、写”四个能力的训练过程,每一种能力在教材中往往都分成Unit1、Unit2、Unit3……,每个Unit又分别是课文、词汇、习题等等。抑或是另一种更简单的归纳,比如英语就是词汇+语法而已,这样一来词汇又是被分成100个一组的WordList来分组记忆,或是被分成不同学科的分类词汇来记忆,语法则被归纳为各种呜哩哇啦的大道理小条目。学生们就是按照这种被拆解成许多小单元的知识来一点一滴地习得英语这门本领的。那么哪一种才是合理和高效的任务分解方法呢?相信谁也不会先把所有的词汇都背会以后再去学语法,谁也不会先把听力练的完美无缺了再去练写作,事实情况是,这些事情是不可避免地齐头并进的进行下去的,每个人都有自己的判断力和决断力,去分配任务,去执行任务。

记得在上初中的时候老师所采用的方法就是:每一个单元在学习之前先用一天时间把此单元的所有生词背会,后面才开始读课文、讲课文、背课文、做习题,这样我发现的确比先学课文再找出生词再记忆生词的学习效率高的多。进而我们又逐渐尝试把一学期的所有生词用一周时间背会然后再开始从第一单元学课文,但是你又不能把初中三年的生词都背会再去从最开始学起,这样可能又会增加记忆难度从而降低效率。

再拿炒菜来做例子,炒菜要先把料都备好,然后按菜谱上的顺序分别下锅处理,谁也不会把肉下锅后再去切芹菜,需要料汁的时候再去现调,这样菜就糊锅了,这是一个顺序和时间都严格限定并且不可逆的程序。另外,如果要炒四个菜呢?应该是先备好所有的料再一个一个炒好上桌才对,如果你备一个菜的料炒一个菜,那炒好最后一个菜的时候前面三个菜全都放凉了,仍然是不合适的方法,尽管其总体时间花费是差不多的。

如果你有100个wav音频文件要用LAME程序压缩成mp3格式,你该怎么做?最笨的办法就是用命令行一个一个的去敲,或者用鼠标一个一个的把wav文件拖到LAME程序上,生成一个一个的mp3文件。好一些的办法是用批处理,或者干脆用支持批处理的LAME外壳程序,把wav文件全部拖进列表里,设定好参数,开始执行!然后你就可以去干别的或者睡觉去。假如你有一个双核的CPU呢?老版本的LAME只能利用一个内核的性能,在双核CPU上执行,CPU占用率最多只能达到50%,那我就同时打开两个LAME,每个分别处理50个wav文件,同时执行压缩,这样压缩速度提高将近一倍!当然,优秀的程序员为我们准备好了LAME的多线程版本,可以完全利用双核处理器的优势了,那我们就只开一个LAME便可以达到效率最佳化。

总结起来,人在做一件事情之前,必须要充分思考时间片的安排,比如这一次出门,有哪些事情可以一起办,走怎样的路线可以节省时间。今天背了word list 1,明天是背word list 2还是去读一篇阅读文章?这种复杂的心理安排我想每个人都是随时随地在思考的,如果没思考就说明你的思维方式有问题,或者说,是个没条理的人。我们不可能做到像电脑那样精确地在每一个时间片内执行一个精确的独立任务块,从而可以任意的三心二意,但是我们在相对精力比较集中的一个时间片内执行任务时尽量不要中断注意力,最好不要被外界打断,否则就会像程序的进度条没有走到100%就被按下了abort或cancel键一样,会丢失一些数据,造成了部分工作的前功尽弃。

尽管总是有人劝诫“速成没戏”,但还是不停地有人宣扬各种速成的方法,并且信者大有人在的同时,“野火烧不尽,春风吹又生”。为什么呢?他们在中学学过“省功不省力、省力不省功”的啊?


想起一个很精妙的比喻:做一件事情的时候有“有效功”和“无效功”,我们只能尽可能减少后者而无法减少前者。但必须充分认识到很多情况下前者的量本来就是很大的,所以一定要端正心态不要以为可以通过什么方法来速成:所谓“速成”很多时候只能以牺牲“有效功”为代价,这是得不偿失的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值