## 脏标识模式 Dirty Flag 将工作延期至需要其结果时才去执行,以避免不必要的工作。 ### ### 要点 - 脏标记,就是用来表示被标记的内容是否有被修改过的一个标志位。 - 脏标识模式:考虑情况,当前有一组原始数据随着时间变化而改变。由这些原始数据计算出目标数据需要耗费一定的计算量。这个时候,可以用一个脏标识,来追踪目前的原始数据是否与之前的原始数据保持一致,而此脏标识会在被标记的原始数据改变时改变。那么,若这个标记没被改变,就可以使用之前缓存的目标数据,不用再重复计算。反之,若此标记已经改变,则需用新的原始数据计算目标数据。 ### ### 使用场合 - 就像其他优化模式一样,此模式会增加代码复杂度。只在有足够大的性能问题时,再考虑使用这一模式。 - 脏标记在这两种情况下适用: - 当前任务有昂贵的计算开销 - 当前任务昂贵的同步开销。 > 若满足这两者之一,也就是两者从原始数据转换到目标数据会消耗很多时间,都可以考虑使用脏标记模式来节省开销。 - 若原始数据的变化速度远高于目标数据的使用速度,此时数据会因为随后的修改而失效,此时就不适合使用脏标记模式。 ### ### 引申与参考 - 脏标记模式在游戏外的领域也是常见的,比如像Angular这种browser-side web框架,其利用赃标记来跟踪浏览器中变动的数据以及需要提交到服务端的数据。 - 本节内容相关的英文原文: - 本节内容相关的中文翻译: