|
| |||||||
| Help - Yardım mIRC Scripting hakkında her konuda yardım alabileceğiniz bölümdür. |
![]() |
| | LinkBack | Seçenekler |
|
#1
| ||||
| ||||
|
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ş. Konu uFuK tarafından (09 Eylül 2013 Saat 04:00 ) değiştirilmiştir. |
| Sponsored Links |
|
#2
| ||||
| ||||
|
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..
__________________ 3m2t //alias $str($+(alias,$chr(32)),4) | alias |
|
#3
| ||||
| ||||
|
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 Alıntı:
Kod: //var %h = 1000,%q = $ticks | while (%h) { write hash.txt %h $str(a,%h) | dec %h } | echo -> et: $calc($ticks - %q) ms Alıntı:
- 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 Alıntı:
Kod: //var %h = 1000,%q = $ticks | while (%h) { noop $read(hash.txt,%h) | dec %h } | echo -> et: $calc($ticks - %q) ms Alıntı:
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. |
|
#4
| ||||
| ||||
|
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 |
|
#5
| ||||
| ||||
|
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
__________________ 3m2t //alias $str($+(alias,$chr(32)),4) | alias |
|
#6
| ||||
| ||||
|
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.
__________________ C/co/cod/code^man. |
![]() |
| Etiketler |
| hakkinda, hash, table |
| |
Benzer Konular | ||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| Hash Toplada degişiklik | By_ATMACA | Help - Yardım | 2 | 07 Ocak 2017 01:53 |
| Hash tables. | fav | Help - Yardım | 4 | 26 Haziran 2012 22:36 |
| /* Küfür Koruması - (Hash) */ | WingmaN | Showcase - Hazır kodlar | 0 | 23 Haziran 2011 22:54 |
| Hash tables. | L4roXyL | Tutorials - Dersler | 1 | 14 Ekim 2009 00:02 |