2

私はjavascriptAPIを使用していて、次の引用を見ました。

JavaScriptはスクリプト言語であるため、コードのすべての行が貴重なプロセッサ時間を消費します。プロセッサ時間を改善する1つの方法は、メソッド呼び出しを連鎖させてコード行を減らすことです。esri.Graphicやesri.symbol。*などのオブジェクトは、オブジェクト自体を返すセッターメソッドを提供し、メソッドの連鎖を可能にします。

効率が悪い:

var symbol = new esri.symbol.SimpleMarkerSymbol();
symbol.setSize(10);
symbol.setColor(new dojo.Color([255,0,0]));

もっと効率的:

var symbol = new esri.symbol.SimpleMarkerSymbol().setSize(10).setColor(new dojo.Color([255,0,0]));

メソッド呼び出しを連鎖させるときは、コードの効率と可読性のバランスを決定する必要があります。連鎖を避ければ、コードはより読みやすく、保守しやすくなる可能性があります。ただし、チェーンが提供するパフォーマンス上の利点は失われます。

私はJavaで理解していますが、チェーンメソッドとメソッドのスタックを記述すると、同じバイトコードにコンパイルされるはずです。しかし、これはスクリプト言語なので、これは本当に水を保持しますか?また、もしそうなら、コードのそのセクションのパフォーマンスのためにコードの可読性を犠牲にする価値がありますか?

そして、このテキストをどこから入手したかについては、http://help.arcgis.com/en/webapi/javascript/arcgis/jshelp/inside_graphics.htmlを参照してください。

編集:いくつかのパフォーマンステストの結果、メソッドが連鎖しているかどうかは実際には問題ではないことがわかりました。(1つはより速く、もう1つはより速くなります)

4

1 に答える 1

3

このようなチェーンメソッドはパフォーマンスを向上させることができますが、使用しているAPIがこの機能を提供するように構築されている限られたシナリオでのみ可能です。頭に浮かぶ最初の例はjQueryです。

$( "#test")を呼び出すと、#testを参照するjqueryオブジェクトを返すのに時間がかかります。

メソッドをチェーンすると、そのオブジェクトが再利用されます。

私が例として行ったこのテストをチェックしてください。

http://jsperf.com/chaining-demo

于 2013-03-22T14:59:54.203 に答える