PHP bit bir koleksiyonu temsil etmek için en hızlı yolu nedir?

3 Cevap php

Bitlik bir koleksiyonu temsil için iyi bir yolu nedir?

Ben çeşitli off / on toggles (bunlardan binlerce) bir dizi var ve onların durumunu saklamak ve almak gerekir. Naif uygulama booleans bir dizi olurdu, ama daha iyi bir yol (daha iyi erişim hızı ve / veya bellek gereksinimleri açısından) olup olmadığını merak ediyorum.

Ben bu BitArray uygulanmasını bulduk, ancak bu durum için yeterli değildir 32 bit, sınırlı bulunuyor.

3 Cevap

Başka bir seçenek olarak tamsayılar PHP_INT_SIZE*8 blok saklayın ve bitwise operators ayarlamak / bunları yoketmek kullanmaktır.

Ben hızlarda veya bu yöntemin bellek tüketimi üzerinde yorum yapamam, bazı kıyaslama yapmak zorunda kalabilirsiniz.

Sen DataStructures in SPL bakmak isteyebilirsiniz. Lütfen usecase bağlı olarak, bir dizi, örneğin daha iyi performans olabilir Eğer büyük veri kümelerinde için sizin toplama, vb boyutunu bilmek zaman FixedArray kullanın, bu bir fark yaratabilir.

Başka bir fikir sadece 1 ve 0'lar tek bir dizeye seçenekleri CONCAT olacaktır. Dizeleri diziler olarak erişilebilir yana, daha sonra bu pozisyonda biraz almak için $ seçenekler [31] yapabilirdi. Eğer gereken istediğiniz tüm, pozisyon hangi seçeneğin ne bir harita.

Yine, Yacoby çözümü olsa benim için en uygun geliyor.

GMP bit işlevleri vardır, gibi http://www.php.net/manual/en/function.gmp-clrbit.php