mIRC Scripting

mIRC Scripting (https://www.mircscripting.net/)
-   Help - Yardım (https://www.mircscripting.net/help-yardym/)
-   -   Hash Table Hakkinda. (https://www.mircscripting.net/help-yardym/646-hash-table-hakkinda.html)

uFuK 09 Eylül 2013 03:53

Hash Table Hakkinda.
 
Hash Tablosu bildiğimiz gibi mIRC'teki hızlı veri ayrıştırma ekleme işlerinde kullandıgımız bir argüman

Hash tablosunun verimliliğinin belirli bir sayidan sonra düştüğünü okudum bir scriptte maximum kaçtane tablo olmalı ?

Bir hash tablosuna maximum kaç veri girebilir?

Sormamdaki maksat şu socket bot çalışmamda kanala giren ip adreslerini bir tabloya kaydettirip clone taramasi şeklinde çalıştırmayi düşünüyorum anlık olarak X rakamdan fazlasina izin vermicek şekilde Joın anında tablomla karşılaştırıp hinc eklemesiyle 3'den fazlaysa 3'den fazla olan clonelerini kanala almayacagım bu bir tarama özelliğinden ziyade anlık çalışan birşey olacak bunun benzerini

Kalabalık bir İRC Serverini baz alırsak 24 saatlik bir zaman diliminde 5000 farklı ip adresinin tabloda kayıt altına alınması olası. Kanal,nick,ip şeklinde birleştireceği için bir ip adresinin girdiği her kanalda ekstra tabloya veri eklenicek bunuda göz önüne alırsak 5000x10 kanaldan 50 bin veriye sahip bir tablo

Bu durum tablonun performansını ne yönde etkiler bu yöntemi tavsiye edermisiniz.

Socketin içinde $ibl vb. identifiersları kullanamıyor olmanın verdiği bir dezavantaj bu durum :) Debug Koruma menümdeki kod şu: $ialchan($wildsite,#,0) >= %limit

Sockette ise uğraşta uğraş.

CoCoRiCo 09 Eylül 2013 08:52

hash için sorun yoktur Ram den calısır.. mirc içinde kötü tarafı buffer dır
debug avantajı cok ancak mirc normal halinde pencerelere yansıyanlar mirc 'nin donmasına neden olur
en büyük fark budur..
hash while yoksa cok fala sorun yaratmaz tablon milyon yada bin olsun sorun yoktur..

L4roXyL 09 Eylül 2013 10:12

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.

uFuK 09 Eylül 2013 13:54

Teşekkürler o halde gerçekleştirmemde problem yok demektir

Hash tablosu içersinde while döngüsünü sıklıkla kullanmaktan zaten kaçındım genelde tablolar anlık işlemler için kullanılıyor HDD'ye kayıtlı 7-8 tablo haricinde yok, onlarda pasif zaten.

Break komutunuda dikkate alacağım değerli görüşleriniz için teşekkür ederim

CoCoRiCo 10 Eylül 2013 09:35

ayrca belirtmek lazım /break işlemi bir başka işlem için bekletmek yada frenlemek içindir olduda işlemi devam ettirmek istersen /contunue bu işlemi en basına alacaktır..
bana kalsa ben break yerine loops/while degerini işlemin eşlesmesinde inc yada dec degişkenine atar direk sonlandırrım.
buda baska bi yaklasım tabi.. sonucta işlem aynı sonucu verecektir.

l4 söylediklerine harfiyen katılıyorum :)

L4roXyL 10 Eylül 2013 19:25

Katılmama lüksün olamaz ihtiyar. :) (nasıl olsa 10.000 km uzaktayım)

Kullanıma göre aslında, eğer amaç sadece eşleşme olduğunda işlem yapmak veya durdurmak içinse, fier için çift $$ veya $$! kullanılabilir, buda zaten değişkene atamayı veya /break etmeyi gerektirmez. Gerçi bunu kullanacağınız yerlere dikkat etmek lazım biraz ileri seviyeye giriyor bu iş.
Ek olarak tekli döngülerde /while yerine /goto kullanmakdan yanayım.


++ mIRCScripting.net hakkında kısaca:

mS; "Gayri resmi mIRC" kullanıcı ve tasarımcı topluluğudur.
2009 yılında kurulan mS; tasarımcı ve geliştiricileri bir araya getiren etkileşim ve iletişim sağlayan bir platformdur.
mS; tasarım, programlama, geliştirme, düzenleme vb. pek çok konu etrafında bir araya gelmiş "mIRC" meraklısı bir çok insan tarafından yaratılan içeriğiyle; kullanıcı dostu, özgün elit, nitelikli kişi ve konularla hizmet sunan mIRC Scripting platformudur.

Özgün içerikten onay almaksızın içeriği yaratan kullanıcılarımız tamamen yada kısmen sorumludur, aynı zamanda söz konusu içerik mS yetkilileri izni olmaksızın, kaynak gösterilse dahi(!) kopyalanamaz ve/ya paylaşılamaz.   Site/içerik hakkında görüş, öneri ve şikayetleriniz için sikayet[at]mircscripting[dot]net e-posta ve ya İletişim adresinden bizlere ulaştırabilirsiniz.



mIRC mIRC Orjinal mIRC İndir mIRC Download mIRC Tutorials mIRC Socket mIRC Commands mIRC Komutlar mIRC Yükle mIRC Dersler mIRC Hazır Kodlar mIRC Classentifier mIRC DLL mIRC Dialog mIRC IRC mIRC FTP mIRC Telnet mIRC Help
mIRC Yardım mIRC Iconlar mIRC Com Object mIRC Binary Files mIRC Picture Windows mIRC Unicode mIRC Forum mIRC Hazır Kodlar mIRC Kod mIRC Script mIRC File Handling mIRC Scripting Language mIRC Scripting Dili mIRC Scripting Info
mIRC Scripting Tutorials



User Alert System provided by Advanced User Tagging v3.1.3 (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd. Runs best on HiVelocity Hosting.

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

SEO by vBSEO 3.6.1