このブログを検索

2013/03/09

リファレンスの用途

リファレンスの使い方はだいたいわかったが、疑問がわいた。

「サブルーチンに文字列をそのまま渡さずにリファレンスで渡すべきか」
ということである。

直感的に、リファレンスで渡した方がよい事はあっても悪いことはない、と思う。

直接渡すと、サブルーチンでその文字列のコピーを持つから、文字列をコピーする時間がかかり、文字列用のメモリ領域も余計に取る、のではないだろうか?

実際に試してみても速度の変化は確認できなかったが、「続初めてのPerl」に以下のような記述があるので、私の考えは間違っていないと思う。
Perlは、@_を作るために、配列のすべての中身をコピーしなければなりません。要素が少なければ問題はありませんが、配列が大きくなったときには、サブルーチンに渡すためだけにデータをコピーするのは少し無駄です。