工作效率与Context Switch


最近读蔡学镛先生的博文《無所不在的Context Switch》,很有启发。以前没有好好考虑这个问题:究竟是什么让你工作效率低下?现在才清楚,Context Switch才是元凶。

电脑应该是有史以来效率最高的工具了,而其效率的提高,最重要的技术就是多道程序并行处理,也就是同一时间电脑可以做很多事情。

它是怎样做到的?Context Switch!每到一定时间片,操作系统会自动切换任务,而先前一个任务的Context都被保持下来,新任务的Context会被装载进来,并马上进入工作状态。关键在于电脑可以极快地切换Context并迅速进入工作流程。但人脑却很难做到这一点,这也就是人脑在工作效率上比不上电脑的主要原因之一。

想想你曾经工作效率极高的时刻,那是怎样一种状态?是不是连续很长时间所有的思想都集中在一件事情上,忘记了外物的存在,甚至忘记了饥饿与劳累。心理学家把这种状态称之为Flow,中文翻译为福乐状态。在从事自己喜欢、并有一定挑战性的事情的时候,Flow最容易出现。提高工作效率,其根本在于增加Flow出现的频率和周期。

这里有两个条件导致高效能:1. 所从事的事情可以诱发Flow,也就是难度不能太高也不太低,压力不太大也不太小,以刚刚超出你的能力范围一点点为宜;2. 减少Context Switch,因为作为正常人来说,一件事情一旦被中断(或者被迫更改),需要很长时间才能重新回到之前的状态,这个恢复时间跟被打断的时间和影响有关。电脑之所有效率高是因为它没有这个问题,因为它只要正常工作,任何时候都是Flow状态,不管事情难度和压力如何,并能以极快的速度Switch Context而无任何不良反应。

人脑不是电脑,但可以借鉴其优点,以避免工作效能低下。我们能学习电脑的是,如何尽可能快的Switch Context。电脑和人脑有许多类比处,比如Cache好比当前正在正在考虑的事情,内存好比记忆,硬盘好比备忘录、文档资料等。

 造成Context Switch慢的关键在于,Context一旦丢失就需要很长时间才能恢复。而电脑把Context很好的组织在存储体系的某一处,以便可以迅速的Load进来,最频繁使用的就放在Cache,其次是内存,最后是硬盘。人脑的记忆容量有限,所以我们更需要外界媒体来记录Context,虽然比不上从记忆调出快,但可靠并且完备。现在有一些工具可以帮助这点,如Mylyn。其实GTD也包含了这个思想。

另一个需要解决的问题就是,减少导致Context Switch的Interrupt。这里包括两个层面,一是减少外界的干扰,二是减少内在的干扰。减少外界干扰,需要你为自己创建一个干净的环境,比如隐藏各种可能分散你注意力的东西,关掉电脑里各种可能弹出提示窗口的软件,带上入耳式耳塞听轻音乐(但不能过量以损伤听力)。减少内在的干扰,也分为几个层面。首先你要有计划,知道有哪些事情要做,当前要做什么,需要做多长时间。其次你需要能尽可能地Focus,在当前这个时间段,在完成一个Task or subtask之前,除非不得已,不要做其他无关事情,更不要分心。

最后,你需要释放或者忘记你的压力,以便为当前的任务创造一个轻松的环境。这个压力可能来自外部,也可能来自内部。你需要非常清楚你当前工作的意义和目标,清楚其他的事情该什么时候做或该不该做。只有这样才能分清主次,集中精力。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
上下文切换(Context Switch)是指在操作系统中,当一个进程或线程被暂停执行,而另一个进程或线程被调度并开始执行时,系统需要保存当前进程或线程的上下文信息,并加载下一个进程或线程的上下文信息。这个过程被称为上下文切换。上下文切换的目的是实现多任务并发执行,提高系统的资源利用率和响应性能。 在Windows系统中,可以使用性能计数器来监控上下文切换的变化趋势。可以添加System\Context Switches/sec或Thread(_Total)\Context Switches/sec计数器来进行性能分析。此外,还可以使用工具如Process Explorer来查看进程的上下文切换情况,可以添加Context Switches和Context Switches Delta列来显示上下文切换的信息。进程的属性中的Threads标签页也可以查看线程对应的上下文切换情况。 在一些特定的代码中,也可以通过一些函数或指令来进行上下文切换。例如,在某些代码中可以使用fpsimd_thread_switch、tls_thread_switch、hw_breakpoint_thread_switchcontextidr_thread_switch等函数或指令来进行上下文切换,这些与硬件跟踪相关的操作可以实现特定的上下文切换功能。 #### 引用[.reference_title] - *1* *2* [Context Switches上下文切换性能详解](https://blog.csdn.net/u011391839/article/details/107493267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [进程切换(context_switch)代码分析:基本逻辑](https://blog.csdn.net/zdy0_2004/article/details/54871189)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值