0

パフォーマンスの観点から、どの関数定義が優れている/高速ですか? オブジェクトを作ってそれに機能を追加するか、機能を1つずつ作成するか?

var myCollection:Object = {
    first: function(variable:int):void {

    },
    second: function(variable:int):void {

    }
}

myCollection.first(1);

また

private function first(variable:int):void {

}

private function second(variable:int):void {

}

first(1);
4

1 に答える 1

2

後者。大規模な場合を除いて、パフォーマンスへの影響はごくわずかですが、2番目の影響はわずかに速くなります。

基本的に、それはスコープに要約されます。オブジェクトから関数を取得するには、クラスのスコープ内でオブジェクトへのメモリ参照を見つけてから、オブジェクトのスコープ内で関数へのメモリ参照を見つける必要があります。2つ目では、クラスのスコープ内でFunctionオブジェクト(すべての関数はオブジェクト)のメモリ参照を見つける必要があります。

2番目の方法は、基本的に、正しい機能を特定する際に仲介者を排除します。これで、それぞれが1ミリ秒未満で検出されます。あなたに関する限り、それは瞬時です。しかし、これを10万回続けて実行している場合はどうでしょうか。ええ、クラス内で宣言することで、パフォーマンスが少し向上するかもしれません。

追記として、最初のオブジェクトを使用して別のオブジェクトをメモリに追加しています。これらを十分に追加すると(ここでも、大規模である必要があります)、メモリに保存されている不要なオブジェクトだけで速度が低下します。

ただし、使いやすさと読みやすさも確認する必要があります。オブジェクトで宣言するということは、クラスがインスタンス化されるとすぐに関数が使用できないことを意味するため、オブジェクトがインスタンス化される前に関数を呼び出さないように注意する必要があります。さらに、コードのヒントを失うことになり、コードを書く一般的な方法ではありません(つまり、別の開発者、または1年後の自分でさえ、ヒントや標準の助けなしにコードがどのように機能するかを理解する必要があります彼らは修正を行う前にすでに学んでいます)

于 2013-03-22T23:44:29.390 に答える