2012-01-23 9 views
2

をインライン化私の質問は非常に単純です:
Q:getset機能が標準機能に比べてインライン化されているの増加のチャンスを持っていますか?/集合関数を取得し、

もしそうなら、意図した用途以外に使用することを妨げるものはありますか? (私のコードが読みにくくなることを除いて)

+1

インライン展開は、セマンティクスに関して透過的であるはずです。それはあなたの質問の第二の部分に答えますか? (あなたはそれらを使用してインライン化しようとしていますか?) – Cameron

+0

私が知る限り、関数インライン化はAS3では全くサポートされていません。 [HaXe](http://haxe.org)は(本当に良い)インライン展開をサポートしています。 – Cameron

答えて

2

私の知る限りでは、Flashは非常にまれにしかインラインではありません。私は、あなたがまだリフレクションによってそれらにアクセスできるように、ゲッターやセッターには起こりません(インライン定義では不可能です)。私は確かにパフォーマンスを向上させるためにそれらを使用しません。実際にこれらの利益が本当に必要な場合は、代わりにhaXeを使用します。これは、Flashランタイムを使用してインライン関数定義を真に行うことができるためです。 これが役立つことを願っています!

+0

私が理解する限り、フラッシュにはJITコンパイラがあり、実際にはインライン関数が可能です。 (JavaのJITに似ています) – Acidic

1

これはわかりませんが、答えは「いいえ」と期待しています。フラッシュ内の多くの要素は動的であり、フラッシュコンパイラはバイトコードの最適化を行わないことで有名です。

実際には、getterを使用すると、setterは関数呼び出しよりも処理速度が遅く、その関数呼び出しはパブリック変数に直接アクセスするよりも時間がかかります。

actionscriptで関数をインライン化したい場合、ベストプラクティスはひどいです:ダングコードをコピーしてください。 これは明らかに、すべてのバグが解消された後の最適化の最終段階です。

編集: Adob​​eコンパイル済みのswfsで多くの改善を行うことができる、Joa ebertのオープンソースのバイトコードオプティマイザがあります。 https://github.com/joa/apparat そこに読んでください。 Readmeでツールを見るために自分自身をスクロールしてください。あなたが望むのはTDSI - TurboDeiselSportInjectionです。名前のためにはどうですか?

+0

JITコンパイラはどうですか? – Acidic

関連する問題