Hangi performansı iyidir: bitiştirmelerini ile değişkenler veya tek tırnakla çift tırnaklı dizeleri?

7 Cevap php

PHP tek tırnaklı dize değişken varlığı kontrol etmek gerekmez, çünkü PHP bir dize etrafında tek tırnak kullanarak çift tırnak kullanarak daha hızlı olduğunu biliyveyauz. Benim sveyaum daha iyi perfveyamans hangi:

A) Mevcut değişkenler ile bir çift tırnaklı dize:

echo "foo bar $baz";

veya

B) Tek bir zincirleme değişken alıntı:

echo 'foo bar ' . $baz;

7 Cevap

Ben bir süre önce üzerinde çalıştığı bir blogda bu bir kriter yaptım (link). Ben gerçekleştirmek için geldim Ancak, değişkenlerin bir yeri vardır. Aralarında reis:

  1. Kaç concatenations yapıyorsun? Bir birleştirme PHP yapmak her zaman tüm dizeyi (ya da ben öyle duydum) yeniden ayrıştırır. Yani 1 birleştirme hızlı olabilir, ama 6. oldukça yavaş olabilir.
  2. Veri türü. Ben kendimi bu bir test değil rağmen şahsen ben ne kadar emin değilim ama veri türü, hem de konuları birleştirilmiş olması söylendi.

Tüm ben aslında bu konuda endişe için gerçekten bir anlaşma büyük değildir söyleyebilirim. Genellikle çift tırnak vs tek şey yine alakasız olur arkanda bu kadar donanım var o noktaya göre genellikle büyük bir site (MySpace, Facebook, Flickr, vb düşünüyorum) yazıyoruz ve eğer sadece bir fark yapmak için gidiyor konuşan .

Şahsen ben (vb içerir gereksiz önlemek için önbelleğe alma, sql optimizasyonu, otomatik yükleme) çok daha önemli bir şekilde performansını etkileyecektir far daha önemli şeyler var derim.

Ben şahsen tek tırnak neredeyse her zaman tercih değil, hız için. Ben daha okunabilir olduğunu düşünüyorum çünkü ben yapmak. Ve benim için önemlidir.

Tüm dürüstlük, ben performans kaydetmek için ararken bu özel sözleşmeyi tetkik gerekir sanmıyorum. Ancak, değer ne için, ben dizeleri içinde değişkenleri birleştirme daha (sakıncası, bu önemsiz ve benim görüşüme göre değil, bir sorun) daha az verimli olduğunu okurken hatırlıyorum düşünüyorum.

Ben iki döngüler, 'için ve "için biriyle benim Vista/php5 kutusunda zamanlama (microtime) ile test edilmiştir.

On 100 iterations: - single quotes: 0.000139 - double quotes: 0.000228

On 1000 iterations: - single quotes: 0.002377 - double quotes: 0.002056

On 2000 iterations: - single quotes: 0.003562 - double quotes: 0.010041

EDIT: also timing echo 'Foo', $bar; 100 iterations = 0.000107, 1000 iterations = 0.001381, 2000 iterations = 0.022434.

; 'Foo', $ bar echo 100 ve 1000 yineleme üzerinde en hızlı, ama nedense 2000 yineleme yavaş var ...?

Dizeleri ayrıştırılması zorunda değilsiniz (çünkü bu tür sorunları çözmek için tek doğru yol olan) test olmadan ben, birleştirme ile tek tırnakla söyleyebilirim. Ama çok uygulama bağımlı bulunuyor.

Ve çift tırnaklı dizelerin daha az görsel karmaşasını ve Cruft var. Yani performans farkı bu konuda endişeli olması gerektiğini bu anlamlı olası olmadığını söyleyerek Jonathan ile yan ediyorum; yerine, sizin proje içinde korumak daha kolay ve tutarlı yolu ile gitmek.

Bir süre önce birisi aslında test sayede bir makale okudum.

Sonuç tek tırnak daha verimli, ancak diğer iki cevaplar işaret olarak, performans farkı endişelenecek kadar önemli olmayacaktır oldu.

İşte eski bir makale, son upadted Mart 2007 olduğunu, ancak performans farkı gerçekten çok düşük olduğunu gösterir: PHP double versus single quotes by Dave Dash

Geçenlerde hatta çift tırnak tek qoutes daha hızlı olabilir bazı durumlar vardır belirtti başka yazı (gerçi tekrar bulamıyorum), okuyun. Bu gerçekten doğru olup olmadığından emin değil.

Peki ne hakkında daha fazla endişe olacağını sizin kod okunabilirliği olduğunu. Eğer tırnak içindeki değişkenler koyarsanız o büyük bir metin olmadığını bulmak / okumak zor olabilir.