変数名はWebサイトのパフォーマンスに影響しますか?


11

変数名はウェブサイトのパフォーマンスに影響しますか?私はこれが非常に少ない数になるだろうことを知っていますが、それでもパフォーマンスの面で長い変数名を選択しない理由を誰でも提供できますか?


2
質問を明確にしてください-この変数はどこにあり、どの言語で書かれていますか?
ルークグラハム

15
理由が(疑わしい)パフォーマンスである場合は、決して短くて非論理的な変数名を選択しないでください。ソースコードは、他の人が読むためのものであり、コンピュータとその微視的なパフォーマンスの向上を満足させるためのものではありません。
マイケルJV

私はPHPを使用しています
。– Avinash

1
...そして、xpertdeveloper.comを所有していますか?
ジムG.

3
こんにちはAvinashは、あなたの質問で、これが事実かもしれないと考えるあなたの論理的根拠を説明できますか?

回答:


16

いいえ、それはしません。一般的に、コードがコンパイルされると、変数名は参照するメモリアドレスに置き換えられます。コンピューターは変数名について何も知りません。彼らは値がどこに保存されているかを知りたいだけです。

変数はシンボルであり、それ以上のものではありません。16進値を名前に置き換えるため、プログラマは自分が何をしているかを理解しやすくなります。したがって、短い変数名を選択してもパフォーマンスは向上しません。

とはいえ、コンパイル時間とJITの最初の解釈が微妙に(そして微視的に言って)改善される可能性がありますが、それは変数名を読み取るためにパーサーがCPUサイクルを少ししか必要としないためです。これは1回限りのコストであり、パフォーマンスを心配する場合は統計的に重要ではありません。


11
あなたの答えはアプリケーションプログラミングについては正しいですが、OPはWebサイトを参照しているため、インタープリター言語を使用している可能性があります。このような場合、コードはファイルから読み込まれ、解釈される必要があります。この場合、長い変数名はロードと解析に時間がかかります。ただし、パフォーマンスの向上はわずかであり、コードを読んで理解するプログラマーの余分な手間によって大幅に相殺されます。
ギャビンコーツ

1
@Gavinインタープリター言語にも同様です-「JIT最初の解釈」。ほとんどのインタープリター言語は、行ごとの実行ではなく、実行時にコンパイルされるようになりました。
マイケルK

1
マイケル-コンパイルするには、まずファイルをメモリに読み込む必要があります。このプロセスは、ファイルの長さによって時間がかかります。長い変数名=長いファイル。
ギャビンコーツ

16

パフォーマンスの面で長い変数名を選択しない理由を説明できますか?

マイケルは答えをカバーしました(つまり、いいえ)が、変数名はプログラマーのパフォーマンスに影響します。新しい開発者やコードに不慣れな人を雇うと、長い変数名や混乱する変数名があると、気が散って理解プロセスが遅くなる可能性があります。

一般に、読みやすいように、短くて説明的な変数名を使用します。コードを10年間無視して、すべてをもう一度理解する必要がある場合を想像してください。「getInput」または「getInputFromUserWhoInputsStringOrElseInformReaderOfError」を読みますか?(もちろん誇張:P)

ただし、名前を少し長くすると有益な場合があります。たとえば、getBirthdayInput()はgetInput()よりもはるかに記述的です。簡単にしたいのですが、単純化しすぎると問題が発生する可能性があります。


6
「getInputFromUserWhoInputsStringOrElseInformReaderOfError」が見つかった場合は、長い名前を読む方が適切です。「getInput」が見つかった場合は、この関数についてのドキュメントを読む必要はありません。そして、10年後にはドキュメントが間違っているか、不完全であるか、欠落しています。getInputFromUserWhoInputsStringOrElseInformReaderOfErrorは確かに長くなりますが、それが何であるかを理解する方が良いです(そして、女性はサイズが重要ではないと言うことを気にしません)。
ダイニウス

この場合、私は同意しません。コードを読むだけでgetInput()が何をするかを理解するのは非常に簡単だと思います。特に「無効な入力」または何かをすぐに出力する場合はそうです。確かに長い名前の方が良い場合もあります-編集します!
ブラックジャック

ofcはコンテキストに依存しますが、私の経験では長い名前の方が優れています(ただし、getInputFromUserWhoInputsStringOrElseInformReaderOfErrorほど長くはありません)。そして、file.read()はfile.readAllFileAsByteArray()よりも速いため、コンテキストは本当に重要です。しかし、通常私が言ったように、より長い名前はより多くの情報を提供します。
ダイニウス

1
ドキュメントが間違っている、不完全である、または欠落している場合、コードベースはとにかく破滅します。
クリストファーマハン

2
これは尋ねられなかった質問に答えています。

7

オペコードキャッシュ(「PHPアクセラレータ」とも呼ばれます)を使用していない限り、確かに影響があります。しかし、その影響は非常に小さいため、無視できます。オペコードキャッシュを使用する場合、影響はありません。


1
また、パフォーマンスを重視して変数名を短くして数サイクルを獲得することを検討する場合は、オペコードキャッシュを使用しないことが犯罪になります。Cなどのコンパイル言語に切り替えることをお勧めします。
SF。

しかし、明らかにその影響は累積的であるため、アプリケーションが大きいほど影響は大きくなりますよね?
-n00dles

3

Michaelはアプリケーションプログラミングに適していますが、質問はインタープリター言語であるPHPを使用したWeb開発に関するものです。このような場合、コードはファイルから読み込まれ、解釈される必要があります。この場合、長い変数名はロードと解析に時間がかかります。

ただし、そうすることによるパフォーマンスの低下は取るに足らないものであり、おそらくスクリプト全体でミリ秒の小数の領域になります。サンプルスクリプトでいつでも試すことができ、http://www.developerfusion.com/code/2058/determine-execution-time-in-php/で詳細に説明されているようなタイミングメソッドを使用できますが、これはおそらくファイルが読み込まれるまでタイミングを開始します。さらに、再試行間の実行時間は変数名の長さの差よりもはるかに異なるため、再試行のかなりの回数を実行し、各再試行の平均をとる必要がありますリモートで意味のある平均を取得します。

BlackJackが指摘しているように、長い名前は理解するのがはるかに難しく、入力するのに多くの余分な労力がかかる可能性があります(そしてタイプミスになりやすいです)。小さなパフォーマンスの向上があるかもしれませんが、これはプログラマーのために作成された余分な手間を正当化するものではありません。そのため、短く、簡潔で理解しやすい変数名が推奨されます。

つまり、要するに、可変長の名前を気にする必要はありませんが、代わりにクリーンで意味のあるコードを書くことに集中してください。


1

たぶん

通常、サーバーコードはコンパイルされ、変数名の長さは前述の理由により影響を受けません。ただし、変数名を使用してマークアップのさまざまな文字列操作を構築する場合。HTTP応答(マークアップ/返されたjson /返されたデータを含む)の方が大きいため、違いは無視できますが、少し時間がかかります。JavaScriptが縮小されていない場合、ファイルが大きくなり、クライアントへの移動に時間がかかります。

JavaScriptファイルを縮小する以外に、Webアプリケーション/ Webサイトの最適化の努力は、他の側面によりよく費やされます。


1

はい、できますが、考えているという意味ではありません。

変数名が間違っていると、開発者はソースコードで簡単に混乱します。読みにくく、理解しにくいでしょう。

最終的には、ソースコードの保守が難しくなり、進化させることはほぼ不可能になります。これは必然的に、メンテナンスコストの増加、開発コストの増加、バグの増加、パフォーマンスの低下につながります

変数名は実行時にはまったく影響せず、コンパイル時にはまったく無視されます。しかし、悪い名前は必然的にパフォーマンスの低下につながります。コードを誰も理解しておらず、ハックが次々と重なり、毎回事態が悪化するためです。

良い変数名について知るためにこれらを読んでください:http : //tottinge.blogsome.com/meaningfulnames

非常に長い変数名の必要性を感じる場合、コードのアーキテクチャが不十分であることを意味することに注意してください。変数名は常にコンテキストで表現されます:名前空間、クラス名、ファイル名、フォルダ、関数名など。したがって、名前を明示的に長くする必要がある場合、これはDOESN T BELONG HERE。この場合、このコードを適切な場所に配置することを検討するか、まだ存在しない場合はその場所を作成します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.