Actions
最適化 #1315
openfilterの戻り値を加工しない場合、配列よりもアロケートのコストが軽いオブジェクトで代用する
Start date:
2019-02-10
Due date:
% Done:
0%
プラグイン名:
Description
動機¶
メモリプロファイルを取ったところ、以下のようなコードで作成される配列が大量にあった。フィルタを過剰に呼び出さない工夫も必要だが、大抵のフィルタは値を加工しないので、値を加工しなかったことを示すキーワードを代わりに返すことで、ほとんどのフィルタ呼び出しで配列の作成を1回削減できる。
対応¶
値を加工しなかったことを示す値には以下の候補がある:
- nil
: やりやすいが見慣れていないと何のことかわからない
- 何らかのSymbolや定数: オブジェクトを作成しない。意図が明確になる。
- 何らかのメソッド: 今もフィルタを強制的にキャンセルするために Filter.cancel
とか書いてるので、 Filter.pass
とか書いたら帯域脱出した上でパスできると良いかも。
- filter_xxxの引数に加工しないという宣言を与える: 戻り値が偶然衝突することはないが融通は効かない
Updated by toshi_a 初音 about 6 years ago
- Subject changed from filterの戻り値を加工しない場合、配列よりもアロケートのコストが軽いオブジェクトで可能代用する to filterの戻り値を加工しない場合、配列よりもアロケートのコストが軽いオブジェクトで代用する
Actions