プロジェクト

全般

プロフィール

最適化 #1315

未完了

filterの戻り値を加工しない場合、配列よりもアロケートのコストが軽いオブジェクトで代用する

toshi_a 初音 さんがほぼ6年前に追加. ほぼ6年前に更新.

ステータス:
新規
優先度:
通常
担当者:
対象バージョン:
開始日:
2019-02-10
期日:
進捗率:

0%

プラグイン名:

説明

動機

メモリプロファイルを取ったところ、以下のようなコードで作成される配列が大量にあった。フィルタを過剰に呼び出さない工夫も必要だが、大抵のフィルタは値を加工しないので、値を加工しなかったことを示すキーワードを代わりに返すことで、ほとんどのフィルタ呼び出しで配列の作成を1回削減できる。

対応

値を加工しなかったことを示す値には以下の候補がある:

- nil : やりやすいが見慣れていないと何のことかわからない
- 何らかのSymbolや定数: オブジェクトを作成しない。意図が明確になる。
- 何らかのメソッド: 今もフィルタを強制的にキャンセルするために Filter.cancel とか書いてるので、 Filter.pass とか書いたら帯域脱出した上でパスできると良いかも。
- filter_xxxの引数に加工しないという宣言を与える: 戻り値が偶然衝突することはないが融通は効かない

toshi_a 初音 さんがほぼ6年前に更新

  • 題名filterの戻り値を加工しない場合、配列よりもアロケートのコストが軽いオブジェクトで可能代用する から filterの戻り値を加工しない場合、配列よりもアロケートのコストが軽いオブジェクトで代用する に変更

他の形式にエクスポート: Atom PDF