私はちょうど約writing efficient code in J2MEのBlackBerryドキュメントの記事を読んでいます。最終的な静的な文字列は、静的な最終的な文字列より効率的ですか?
この記事では、「文字列に静的変数を使用する」ようにアドバイスするセクションがあります。推論の理由は、コンパイラはstatic final
の参照を文字列リテラルとしてインライン展開するので、最終的にはそれを残すほうがよい(静的参照を取得する方が文字列プールから取得するよりも安価であると仮定していると思います)。
これはすべてのJVMで当てはまりますか?私の最後の仕事で私の上司は私たちの頭に私たちは常に、私たちの定数のためにstatic final
を使用しなければならないと打ちました。私たちはJavaでの組み込みプログラミングを行っていたので、彼はパフォーマンスのために本当に頼りになりました(この場合、メモリやスピードにもっと関心があるかどうかはわかりませんが)。私の上司は何年もJavaをやっており、本当に彼のことを知っています。今私は矛盾したアドバイスを得ています!
だからどちらが本当に良いですか?メモリ節約の観点かスピードの観点か、J2MEかJ2SEのどちらかで答えることができます。
おそらくstatic finalを使用してください。マシンに何かインライン化すべきかどうかを判断させる。また、文字列のインライン展開のパフォーマンスが心配な方には、javaはおそらく適切な言語ではありません – Falmarri
AndroidまたはBlackBerry用のUIをプログラミングする場合、言語の選択肢はありません。しかしそれを超えて、何が起こっているのかを知っておくのが一番です!さあ、男、それは原則の問題です!あなたはマシンに従わず、マシンはあなたに従います!また、なぜこれはコメントであり、答えではないのですか? –
アンドロイドのようなものには選択肢がないが、インライン化する文字列はボトルネックではなく、バックグラウンドで実行されている60の他のアプリケーションです。また、実際に何が起こっているのかを知ることをお勧めしますが、javaなどの言語では、仮想マシンが自分の望むコードを実行することができます。 – Falmarri