Tekil Mesaj gösterimi
  #3  
Alt 09 Eylül 2013, 10:12
Avatar Yok
L4roXyL L4roXyL isimli Üye şimdilik offline konumundadır
 Chief 

mS Puan: 1031
mS Derece: L4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisi
 
Üyelik tarihi: 10 Temmuz 2009
Yaş: 39
Mesajlar: 339
Konular: 100
Eklentiler: 3
Alınan Teşekkür: 146
Yapılan Teşekkür: 0
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Standart

Hash table'ı 50 slotluk açsan dahi, binlerce ve katsayısı kadar veri girdisi yapabilirsin. Bu hiçbir sorun teşkil etmez. Tek dikkat etmen gereken item kısmında boşluk karakteri kullanmamandır. Data kısmı veriyi içeren kısım olmalıdır zaten.

Ek olarak hash tabloya yönelik while kullanmak, hdd-de işlem gören bir dosyaya while kullanmaktan tabiki daha hızlıdır. Bunu kendinde test edebilirsin esasında, şöyleki;

Hash table'a veri girmekde örnek:

Kod:
//var %h = 1000,%t = $ticks | while (%h) { hadd -m hash %h $str(a,%h) | dec %h } | echo -> et: $calc($ticks - %t) ms
İlk 5 girdinin değeri:

Alıntı:
-> et: 296 ms
-> et: 312 ms
-> et: 280 ms
-> et: 296 ms
-> et: 296 ms
Aynı örneği /write komutu ile hdd'ye kaydetme de kullanalım, farkı bir görelim.

Kod:
//var %h = 1000,%q = $ticks | while (%h) { write hash.txt %h $str(a,%h) | dec %h } | echo -> et: $calc($ticks - %q) ms
İlk 5 girdinin değeri:

Alıntı:
-> et: 12621 ms
-> et: 12433 ms
-> et: 12468 ms
-> et: 12468 ms
-> et: 12936 ms
Sanırım yazdırma olayındaki fark gayet açık miktarda ortada.

-

Birde okuma olayına bakalım

Ram'da okutma örneği:

Kod:
//var %h = 1000,%q = $ticks | while (%h) { noop $hget(hash,$hget(hash,%h).item) | dec %h } | echo -> et: $calc($ticks - %q) ms
İlk 5 girdiniz değeri:

Alıntı:
-> et: 62 ms
-> et: 62 ms
-> et: 31 ms
-> et: 32 ms
-> et: 78 ms
Hdd'de okutma örneği:

Kod:
//var %h = 1000,%q = $ticks | while (%h) { noop $read(hash.txt,%h) | dec %h } | echo -> et: $calc($ticks - %q) ms
İlk 5 girdinin değeri:

Alıntı:
-> et: 2917 ms
-> et: 2902 ms
-> et: 2918 ms
-> et: 2948 ms
-> et: 2917 ms
Buraya kadar hash table'ın dosya bazlı sisteme göre ne kadar hızlı çalıştığını görmüş olduk sanırım.

Ayrıca senin isteğine göre de, while kullanımında eşitlenme gerçekleştiğinde /break kullanman while döngüsünü sonlandırır ki buda eşitlenme/karşılaşma elde edildiği halde while döngüsünü veri tüketimine kadar devam ettirmez. Sonuç olarak daha hızlı çalışmasına bir hayli neden olacaktır.
__________________
C/co/cod/code^man.
Alıntı ile Cevapla
 
1 2 13 14 16 17 18 19 21 22 23 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 49 50 51 52 54 55 56 57 58 59 60 61 62 63 67 68 69 70 71 72 73 74 75 76