ReaderWriterLockSlim.EnterReadLockはlock(...)よりも2~4倍遅い。
なので、読み取り専用の処理が、とても短い場合はReaderWriterLockSlimよりもlockステートメントを使った方がよさげ。
lock(...)の方が早くなる例 (Core i7 920[HT有効, 同時実行スレッド数8]の場合):
- 1000エントリのHashSet<T>の探索を8回行う場合
- 1000万エントリのHashSet<T>の探索を5回行う場合
- クラスのインスタンス生成なら8回まで
- HashSet<T>をforeachで回すなら、要素数12まで
- List<T>をforeachで回すなら、要素数18まで
- Tの配列をforeachで回すなら、要素数80まで
- List<T>をforで回すなら、要素数50まで
- Tの配列をforeachで回すなら、要素数64まで