Top > Scala > 名前渡し、参照渡し


コマンドプロンプトで試した結果です。


名前渡し

呼び出し先が引数にアクセスする毎にコードブロックが実行される。
処理時間がかかる。

def call_by_value(param: => Long)={
  param
}

参照渡し

普段はこちらを参照渡しで実装していると思います。

def call_by_reference(param: Long)={
  param
}

検証

CやJavaで参照する方が速いのは分かっていますが、処理時間を比較します。
ナノ時間の呼ば出しが変わるので、ログも変わります。

def getTimeNano()={
  println("getTimeNano")
  System.nanoTime
}

def callByValue(param: => Long)={
  println("callByValue : time = " + param)
  param
}

def callByReference(param: Long)={
  println("callByReference : time = " + param)
  param
}

-------------------------------------------
scala> callByValue(getTimeNano())
getTimeNano
callByValue : time = 5794272027535
getTimeNano
res__: Long = 5794274222248

scala> callByReference(getTimeNano())
getTimeNano
callByReference : time = 5807062118780
res__: Long = 5807062118780
-------------------------------------------



Copyright © 2015 AchaPorutePiipo All Rights Reserved.