エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
(C#) List<T>からSpan<T>を引き抜いて高速化 - ネコのために鐘は鳴る
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
(C#) List<T>からSpan<T>を引き抜いて高速化 - ネコのために鐘は鳴る
List<T>はGetEnumerator()を実装しているため当然foreachで回せる。foreachの速度を落とさないために具... List<T>はGetEnumerator()を実装しているため当然foreachで回せる。foreachの速度を落とさないために具象型のEnumeratorを返したりEnumeratorを構造体実装していたりと工夫は凝らされているが、それでもSpan<T>やT[]には数倍~10倍程度遅い。この点に関しては、List<T>は状態をバージョン管理しており、列挙中の変更を検知しているためどうしようもない。forで回したところで、ランタイムによってインデックスの境界値チェックが消える特殊最適化がかかるSpan<T>やT[]には原理的に勝てない。 しかし、List<T>は柔軟で使いやすい。ただ列挙速度も落としたくない。そこで列挙時だけList<T>をSpan<T>にしてしまおうという話。 以下List<T>の実装を簡略化したもの。 public class List<T> { private T[