Nasıl Perl bir dizi belirli bir değeri varsa kontrol edebilirim? | Netgez.com
SORU
18 Mayıs 2010, Salı


Nasıl Perl bir dizi belirli bir değeri varsa kontrol edebilirim?

Dizi boyunca yineleme olmadan bir dizide bir değerin varlığını kontrol etmenin bir yolunu bulmaya çalışıyorum.

Bir parametre için bir dosya okuyorum. Uğraşmak istemiyorum parametrelerin uzun bir listesi var. 1* *Bir dizide bu istenmeyen parametreleri yerleştirdim.

Yeni bir parametre okumak istiyorum ve eğer @badparams, içinde varsa değil bu süreç. Eğer varsa @badparams sonraki okuma gidin.

CEVAP
25 HAZÄ°RAN 2011, CUMARTESÄ°


En iyi genel amaçlı - Özellikle kısa diziler (1000 parça) ve ihtiyaçlarına en uygun iyileştirmeleri ne emin isteyen programcılar.

# $value can be any regex. be safe
if ( grep( /^$value$/, @array ) ) {
  print "found it";
}

Grep eğer dizideki ilk değer ile eşleşiyorsa bile tüm değerleri geçtiği belirtilmiştir. Bu doğru, ancakgrep hala son derece hızlı çoğu durumda. Kısa diziler hakkında konuşuyorsun (1000'den daha az bileşen) sonra en algoritmalar oldukça hızlı zaten olacak. Eğer çok uzun diziler (1,000,000 öğeleri) bahsediyorsan grep kabul edilebilir hızlı, maddenin ilk bağımsız olup olmadığı ya da dizideki orta ya da son.

Artık diziler için optimizasyon Durumlarda:

Eğer dizi sıralanmışkullanın". ikili arama

Eğeraynı diziyi tekrar tekrar aranırbirçok kez, bir karma ilk kopyalayın ve karma kontrol edin. Eğer hafıza önemli ise, o zaman karma dizideki her bir öğeyi taşıyın. Daha verimli bellek ama orijinal dizi yok.

Eğeraynı değerleri tekrar tekrar aradıdizi içinde, tembel bir önbellek oluşturmak. her madde aranır gibi, ilk arama sonucu olmadığını kontrol edin, bir karma kalıcı olarak depolanan. eğer arama sonucunda karma bulunursa, o zaman dizi arama ve bu yüzden karma bulmak ve arama geçelim bir dahaki sefere karma) kalıcı sonuç koy.

Not: bu iyileştirme yalnızca uzun diziler ile uğraşırken daha hızlı olacaktır. Üzerinde optimize yok.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • Drakinen

    Drakinen

    1 EYLÃœL 2008
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012