Neden === PHP == daha hızlıdır?

8 Cevap php

Neden == PHP daha === hızlı?

8 Cevap

Eşitlik operatörü == zorladı, yoksa oysa diğer terimi eşitse geçici görmek için veri türünü dönüştürür Çünkü === (kimlik belgesi), Herhangi bir dönüştürme yapmak gerekir ve yok böylece daha az iş daha hızlı yapma, yapılır.

false göre - === isleminden gerçekleştirmez, yani 0 == '0' true olarak değerlendirir, ancak 0 === '0'.

Böylece herhangi kıyaslamalar, aslında yürütülmektedir önce 1 numaralı ve dize '1 'tip onay başarısız - iki argüman type aynı ise, ilk === denetler. Öte yandan, == ilk türünü kontrol ve önde gider ve aynı tip argümanları hem de dönüştürür ve daha sonra karşılaştırma yapar değildir.

Bu nedenle, === bir başarısız durumunu kontrol de daha hızlıdır

== Mümkünse / gerekirse bir maç kazanmak için tip zorlama yapmaya çalışacağız ki gerçekten, önemli ölçüde daha hızlı olmadığını biliyorum, ama === çoğu dilde doğrudan bir tür karşılaştırma yoktur.

== Karşılaştırma öncesi türü dönüştürme büyük bir yükü doğurur. === Birinci tip, daha sonra herhangi bir türü dönüştürme yapmak zorunda kalmadan devam eder.

Çünkü === doesn't need to coerce the operands to be of the same type karşılaştırarak yapılmıştır.

Ben hız farkı olsa da çok şüpheliyim. Normal şartlar altında daha mantıklı hangisi operatörü kullanmak gerekir.

Iki değişkenin aynı değeri varsa veri türü görmek için dönüştürür değilsiniz, ama iki değişken aynı değere sahip olmadığını görmek için gerektiğinde mather doesent eğer değişkenlerin ne tür == kullanacağız çünkü Sonuç === hızlıdır ya === da değişkenlerin türü önemli ise.

Dikkate alınması gereken iki şey vardır:

  1. Işlenen türleri == ve === üreten daha sonra farklı ise different results. Bu durumda bir seçim yok - bir veya diğer kullanmak zorunda.

  2. İşlenen türleri aynı ise hem üretecek gibi, o zaman kullanabilirsiniz == veya === olabilir same results. Bu durumda her iki operatörlerinin hızı hemen hemen aynıdır. Hiçbir türü dönüştürme ya da operatörler tarafından yapılır çünkü bu.

I hızını karşılaştırılmıştır:

  • $a == $b vs $a === $b
  • burada $a ve $b rasgele tamsayılardı [1, 100]
  • iki değişken bir milyon defa yaratılan ve karşılaştırılmıştır
  • Testler 10 kez çalıştırılmıştır

Ve işte sonuçlar:

 $a == $b $a === $b
--------- ---------
 0.765770  0.762020
 0.753041  0.825965
 0.770631  0.783696
 0.787824  0.781129
 0.757506  0.796142
 0.773537  0.796734
 0.768171  0.767894
 0.747850  0.777244
 0.836462  0.826406
 0.759361  0.773971
--------- ---------
 0.772015  0.789120

Sen hızı hemen hemen aynı olduğunu görebilirsiniz.