2012-03-15 10 views
0

anon関数はオブジェクトなので、関数はそのオブジェクトのメソッドであると考えられます。それは彼らが通常の機能よりも多くのリソースを取ることを意味しますか?匿名機能は通常の機能よりも高価ですか?

+0

匿名関数オブジェクトの仕組みは?とにかく - あれがあれば、相違点についてピーナッツについて話し合うつもりです。 –

+0

* normal関数*を定義し、高価なものは何ですか?あなたはアプリケーションを維持する必要がありますか? – hakre

答えて

0

私は相対的な実行時間について小さなテストを行いました。

<?php 
// long execution time required 
ignore_user_abort(1); 
set_time_limit(0); 

// some presumingly costly function 
function mathematics() { 
    $c = 0; 
    for ($i = 0; $i < 1000; $i++) $c += rand(0, 1000); 
    return $c/1000; 
} 

$lambda = function() { 
    // same as mathematics() 
}; 

// Executing normal function 
for ($i = 0; $i < 50000; $i++) mathematics(); 

// Now onto lambda function 
for ($i = 0; $i < 50000; $i++) $lambda(); 
?> 

xdebugでプロファイリングと cachegrind利回りにキャッシュを供給:

mathematics(): 31,804,288 
closure:  31,719,438 

私はそれを実行するのに必要な時間の差は無視できると仮定しても安全だと思うようなスクリプトです。

+0

テストをしなくてもそれを仮定することは安全です –

+2

"疑わしい時にテストする"という行にちょうど従ってしまったので、そのアプローチでは何もひどいものは見られません。 – ashein

+0

次回は「疑問がある場合は質問してください。 –

3

何がより多くのリソースを取っていますか?記憶?またはハードドライブスペース?

メモリはありません。すべてのファイルがロードされます。ファイルをインクルードすると、ファイル全体が読み込まれます。したがって、関数がメソッド内の変数として機能する場合、関数は自動的に実行され、Xメモリの容量がさらに多くなることがあります。関数として定義された関数は、呼び出されるまで実行されません。そのため、使用されていない変数(宣言されたことがありますが使用されていない変数)として機能する関数があるとします。次に、それはより多くの記憶を取るでしょう。

ハードドライブの空き容量:同じ容量を使用します。

+0

これはPHPまたはすべての言語のみですか? – Dev

+0

私が言ったことは、PHPに特有のことです、javaはまったく新しいボールゲームであり、CやC#やC++は私が十分に答えてくれるわけではありません。 – Churk

関連する問題