Hızlı deyim yürütmek veya, 10-20 koşulların en az bir anahtarı var mı nerede
Thanks Dave
This person benchmarked ve bu sonuca vardık "if / else biraz daha iyi oldu." Kodu ve kriterler dahildir.
This benchmark eşdeğer oldukları sonucuna varıldı.
Ben her zaman [(3)] fazla 4 veya 5 koşulları sizin için if
/ else
/ {üzerinde switch
kullanmak hemen hemen her zaman kullanmanız gerektiğini öğretti oldum } yapılar - Ama yanlış olabilir.
Ben Jordan, (ilk) linke şüphe ile bakmak, ben uygun kullanıldığında switch
bunu yedeklemek için herhangi bir sabit veri var, biraz daha hızlı olması gerektiğini düşünüyorum ama her zaman kriter kendiniz yapabilirsiniz. Eğer örneğin katı (===
) karşılaştırmalar yapmak gerektiğinde kullanmak asla bir senaryo switch
olduğunu.
Her neyse, gelin bu mikro-optimizasyon varlık olduğunu, ve ben bir çirkin birden 0.000001 saniye olası pahasına okunabilir, güzel (girl-style) kodu olan tercih.
10-20 koşulları için kesinlikle switch
IMO kullanmalısınız.
Sorunun doğası hakkında daha fazla bilgi olmadan, ben açıkça burada yanlış bir şey optimize olduğunu tahmin ediyorum.
Eğer büyük bir veri kümesi üzerinde döngü ve belirli bir DataField içeriğine bağlı olarak farklı şeyler yapıyor hakkında karar olsaydı koşullu hızı alakalı olacağını, sadece durum.
Her bir veri ile bir çok şey yapıyorsanız o zaman durumun maliyeti her döngü tekrarında hız alakasız olmalı ve kesinlikle okunabilmesi için optimize etmek ve anahtar deyimini kullanmanız gerekir.
Eğer her tekrarında çok az yapıyor ama bir milyon kez yapmak zorunda ise, o zaman belki farklı bir şekilde bu konuda gitmeli:
foreach($alldata as $index => $dataset)
{
$function_to_call = 'handle_'.$dataset->switching_value;
if (function_exists($function_to_call))
$function_to_call($dataset);
}