[Gelistirici] Eğlencelik

Faik Uygur faik at pardus.org.tr
27 Eki 2007 Cmt 21:40:34 EEST


Değerlere yaklaşmak için biraz cache'inizi ısıtın... :)

In [1]: import pisi

In [2]: installdb = pisi.db.installdb.InstallDB()

In [3]: packagedb = pisi.db.packagedb.PackageDB()

In [4]: def search_timer(db, terms):
   ...:     import time
   ...:     a = time.time()
   ...:     print db.search_package(terms)
   ...:     print time.time() - a
   ...:

In [5]: search_timer(installdb, ["xml", "parser"])
['XML-DOM', 'XML-Parser', 'piksemel', 'iksemel', 'libxml2', 'libxml-perl']
0.672440052032

In [6]: search_timer(packagedb, ["xml", "parser"])
['XML-DOM', 'libxmlpp', 'XML-Parser', 'xerces-c', 'libxml-perl', 'beautifulsoup', 'piksemel', 'XML-SAX-Writer', 'iksemel', 'libxmlpp2', 'libxml2', 'XML-SAX', 'beautifulsoup', 'PEAR-XML_RSS', 'PEAR-XML_Parser']
1.6654419899

-------------------------

apt-cache search'ün neden hızlı çalıştığını merak ederdim, koduna baktım. 
Index dosyası üzerinden read edip regex ile parse ediyor sadece. Script ekte. 
Buyrunuz:

faik at windu ~ $ time ./pisi-cache.py xml parser
libxslt - XSLT kütüphane ve araçları
docbook-xml4_1_2 - XML için Docbook DTD
apr-util1 - Apache çalışma ortamı araçları
XML-NamespaceSupport - İngiliz İngilizcesi KDE uluslararasılaştırma paketi
[...]
openoffice - OpenOffice.org Türkçe ofis yazılımı
nvu - Linux için dreamweaver'e benzeyen bir web editörü
XML-SAX - Oluşan bellek hatalarının kullanıcı kipinde işlenmesini sağlayan bir 
kütüphane
libksba - Çeşitli uygulamaların X.509 sertifikaları ve CMS verilerine kolay 
erişebilmesini sağlar

real    0m0.654s
user    0m0.606s
sys     0m0.047s

Tabi orada 20K paket ile nasıl yine de hızlı: Bir seferde tüm paketleri 
bulmuyorda buldukça yazdırıyor. Tepki süresi hızlı görünüyor. Index 
dosyamızın xml olması ve bundan kaynaklı büyüklüğü dezavantajı 
oluyor tabi. Ama bu artılarının yanında hiç bir şey.

Şu anki api search bundan biraz yavaş fakat hızı çok kötü değil, kodu da temiz 
ve az. Ayrıca yukardaki testde contrib ve pardus depolarında arıyor. 
pisi-cache scripti sadece pardus deposunda.

pisi-cli search yavaşlığı daha çok başındaki db initialize'dan ve tüm 
paketleri bulduktan sonra bastırdığımızdan kaynaklı.

installdb.search_package da beklediğimden çok hızlı çıktı :)

Öyle bir şeyler...
- Faik
-------------- sonraki bölüm --------------
A non-text attachment was scrubbed...
Name: pisi-cache.py
Type: application/x-python
Size: 662 bytes
Desc: kullanılamıyor
URL: <http://liste.pardus.org.tr/gelistirici/attachments/20071027/8ff43fd1/attachment-0002.bin>


Gelistirici mesaj listesiyle ilgili daha fazla bilgi