低效的不可变集合修改

本文介绍修改不可变集合时的性能见解,例如 ImmutableList<T>

原因

修改不可变集合(例如 AddRemoveInsert)会导致性能缓慢。

性能见解说明

每次修改不可变集合都会创建集合的新副本,从而导致内存分配过多和 CPU 使用率过高。 在频繁、循环或性能关键型代码路径中执行修改时,这尤其低效。

如果可能,在构造期间或在热路径中使用可变集合(例如 List<T>),并在必要时才转换为不可变集合。 可变集合允许高效就地修改,而不可变集合最适合线程安全和不经常修改的方案。

如何调查警告

在 CPU 使用率工具中,单击“ 查看源代码” 以查找正在修改不可变集合的位置。 如果可能,重构以在性能敏感代码中使用可变集合,并仅在需要时转换为不可变集合。

另请参阅

不可变集合文档