2011-02-02 6 views
2

可能性の重複:
Is there a performance benefit single quote vs double quote in php?PHP、一重引用符または二重引用符の方が高速です。

高速です

、単一引用符または二重引用符、なぜ?

どちらの方法を使用する利点は何ですか?

+4

これは問題ではありません。速いです。 – zerkms

+1

[「速くする、遅くする」](http://asserttrue.blogspot.com/2009/03/how-to-write-fast-code.html) ) – Gumbo

+0

この質問は、私の質問の背後にある理由を説明することなく、適切な調査をせずに早急に求められました。それはかなり古く、否定的な点を引きつけているようです。質問を取り除くよう要求するのは適切なのですか?それとも私はそれを残して、私が質問に不満を抱いているという事実を生きて生きていますか? – cornernote

答えて

7

あなたが何をしたいのかによって異なります。私はちょうどいくつかのベンチマークを行い、5つのテストケース:二重引用符+変数、二重引用符、二重引用符と文字列の追加、一重引用符、および文字列の付いた一重引用符をテストしました。

私のテストコード。百万のループ。文字列の割り当て。

<?php 

$start = microtime(true); 

$str = ""; 

for($i = 0; $i<1000000; $i++) 
{ 
     $str = "hello $i"; 
} 

$end = microtime(true); 

echo $end - $start; 

結果:

シングルとダブルの変数を使用せずに文字列を引用が同じくらい速いです。 (それぞれ約0.08)。 変数連結による単一引用符と二重引用符の文字列はほぼ同じですが、変数よりも遅いです。文字列内の変数と 二重引用符は、(0.20から0.25の周りに)最も遅いだった

を(各周りに0.17から0.20エコー)だから、シングル/ダブルは本当に重要ではありませんが、文字列の連結が速いようです可変置換よりも。

1

内のテキストの処理が不要な場合は、singleが高速になります。

+0

これがなぜ落とされたのか分かりません。質問された質問に対する唯一の実際の正しい回答です。他のすべての答えは「それは問題ではありません」と言いますが、実際には質問には答えません。 –

+0

また、この回答はおそらく、パフォーマンスの差がより顕著なPHP 5.2を参照していることに注意してください。 > 5.3では、ほとんどの時間差の場合には1%未満しか話していません。 –

18

私は、彼らがシフトを必要としないため、単一引用符が高速であることを言う;)

異なる引用符は、可変出力の意味を持つ文字をエスケープします。一重引用符内のコンテンツはそのまま使用され、エスケープ文字や変数は解釈されません。二重引用符は変数値を解釈し、改行(\n)のような特殊文字をエスケープします。

+8

+0、答えは+1、シフトキーは+1。 – sberry

+2

彼はVim – Tim

+1

nahを使用しなければなりません。私はシングルシフトのためのシフトも大好きです –

3

は「( ')と単一phpbench @文字列を引用

結論。():」二重のパフォーマンスの比較を見てくださいPHPの今日のバージョンではこの引数が両方に満足しているように見えますラインの側。このすべてで調和し合うように!

+1

+1。私は一重引用符を使用することがパフォーマンスにとっていかに重要かを教えてくれた2人の他の開発者の話を聞かなければなりませんでした。私は自分のベンチマークスクリプトを書いて、それが本当にどれほど重要ではなかったかを示しました。つまり、マイクロ秒が来る。このリファレンスもありがとう。 – sberry

+0

@ sberry2Aあなたは彼のPHPベンチでMarcinと間違っています。独自のベンチマークスクリプトを作成するのではなく、コードをプロファイリングして、実際にパフォーマンスにとって重要な問題を見つけ出す必要があります。この言語は本当に素人開発者に苦しんでいます。 –

2

PHPは、単一引用符

の内側にあるものを解釈するための追加処理を使用することはありません

echo 'anyting else ? $something'; 
>> anything else? $something 

のように単一引用符は、一般的に高速であり、そしてすべてがプレーンな文字列として扱わ内部で引用され、

しかし、二重引用符と比較すると、PHPは$ somethingを割り当てられた値に置き換えます

$something = 'yup'; 
echo "anyting else ? $something"; 
>> anything else ? yup 
+1

一重引用符で囲まれた文字列でも、ある程度の解釈が必要です。 'または' \で囲まれた文字列は、一重引用符であっても、それらの文字を正しく処理するためのインタープレースメントの対象となります。 –

+0

これは、この回答が与えられた時に戻ってきたかもしれませんが、今日では、ループ内の何百万もの文字列を扱っていない限り、パフォーマンスに関しては一重引用符と二重引用符の違いはごくわずかです。 – GordonM

13

1秒間に1000秒の文字列を処理していますか?もしそうでなければ、本当に心配してはいけません。

二重引用符を使用します(その他の変数、数学、と)

を文字列補間を使用したい場合にも試してみて、一貫している必要があります。

時間の約97%という小さな効率を忘れるべきです。早すぎる最適化はすべての悪の根源です。

Donald Knuth

+3

"あなたも試してみて、一貫しているべきです" ...その1つの軽食の+1。 – sberry

+0

一貫性を保つために、私はしばしば「持っている」のようなコードを書いています。 $ count。 「もの」。 "\ n" ..しかし、それは "私は$個のものを\ n"持っているより難しいようです。あなたがそれを後で読むことができる限り、それは本当に重要ではないと思います。 – cornernote

2

スピードについては、のみが正解です。はあなたの懸念事項ではありません。期間。 違いが、あなたが見つけたとしても、全く問題ではありません。速度に関心を持つためには、1つのピクセルではなく、全体の画像を理解する必要があります。アプリケーションをより高速かつ効率的にすることは、すばらしい複雑な作業です。しかし、それは "どちらが速いのか"という質問をすることによって行うことはできません。 実際にに関係する場合は、が何であるかを学習から始めます。 http://php.net/types.string
それは本当にメリットはありませんではなく、しかし例を使用:利点のために、マニュアルページが説明するように

は、それを学ぶのに最適な場所です。

関連する問題