mIRC Scripting  


Geri dön   mIRC Scripting > mIRC Scripting > Help - Yardım

Help - Yardım mIRC Scripting hakkında her konuda yardım alabileceğiniz bölümdür.

Cevapla
 
LinkBack Seçenekler
  #1  
Alt 09 Eylül 2013, 03:53
Avatar Yok
 Coders 

mS Puan: 301
mS Derece: uFuK MeraklıuFuK MeraklıuFuK MeraklıuFuK Meraklı
 
Üyelik tarihi: 24 Aralık 2009
Bulunduğu yer: GiresuN
Mesajlar: 30
Konular: 6
Eklentiler: 0
Alınan Teşekkür: 0
Yapılan Teşekkür: 0
Standart 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ş.

Konu uFuK tarafından (09 Eylül 2013 Saat 04:00 ) değiştirilmiştir.
Alıntı ile Cevapla
Sponsored Links
  #2  
Alt 09 Eylül 2013, 08:52
CoCoRiCo - ait Kullanıcı Resmi (Avatar)
 Chief 

mS Puan: 571
mS Derece: CoCoRiCo ÇalışkanCoCoRiCo ÇalışkanCoCoRiCo ÇalışkanCoCoRiCo ÇalışkanCoCoRiCo ÇalışkanCoCoRiCo Çalışkan
 
Üyelik tarihi: 10 Temmuz 2009
Bulunduğu yer: \xml:http\
Yaş: 41
Mesajlar: 135
Konular: 22
Eklentiler: 0
Alınan Teşekkür: 85
Yapılan Teşekkür: 19
Standart

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
Alıntı ile Cevapla
  #3  
Alt 09 Eylül 2013, 10:12
Avatar Yok
 DirtyCoder 

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ş: 33
Mesajlar: 339
Konular: 100
Eklentiler: 3
Alınan Teşekkür: 40
Yapılan Teşekkür: 0
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
  #4  
Alt 09 Eylül 2013, 13:54
Avatar Yok
 Coders 

mS Puan: 301
mS Derece: uFuK MeraklıuFuK MeraklıuFuK MeraklıuFuK Meraklı
 
Üyelik tarihi: 24 Aralık 2009
Bulunduğu yer: GiresuN
Mesajlar: 30
Konular: 6
Eklentiler: 0
Alınan Teşekkür: 0
Yapılan Teşekkür: 0
Standart

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
Alıntı ile Cevapla
  #5  
Alt 10 Eylül 2013, 09:35
CoCoRiCo - ait Kullanıcı Resmi (Avatar)
 Chief 

mS Puan: 571
mS Derece: CoCoRiCo ÇalışkanCoCoRiCo ÇalışkanCoCoRiCo ÇalışkanCoCoRiCo ÇalışkanCoCoRiCo ÇalışkanCoCoRiCo Çalışkan
 
Üyelik tarihi: 10 Temmuz 2009
Bulunduğu yer: \xml:http\
Yaş: 41
Mesajlar: 135
Konular: 22
Eklentiler: 0
Alınan Teşekkür: 85
Yapılan Teşekkür: 19
Standart

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
Alıntı ile Cevapla
  #6  
Alt 10 Eylül 2013, 19:25
Avatar Yok
 DirtyCoder 

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ş: 33
Mesajlar: 339
Konular: 100
Eklentiler: 3
Alınan Teşekkür: 40
Yapılan Teşekkür: 0
Standart

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.
Alıntı ile Cevapla
Cevapla

Etiketler
hakkinda, hash, table

Seçenekler

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


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


Yasal Uyarı

    5651 sayılı yasada belirtilen "Yer Sağlayıcı" olarak hizmet sunmaktadır. İlgili yasaya göre site yönetiminin tüm içerikleri kontrol etme yükümlülüğü yoktur. Bu sebep ile sitemiz, uyarıları dikkate alarak yasa dışı paylaşımlar hakkında gerekli işlemleri yapmaktadır. Oluşabilecek yasal sorumluluklar üyelerimize aittir. Gerekli şikayet bildirimleri yapabilmek için "burayı" tıklayarak gerekli alanları doldurup yapabilirsiniz.
mIRCScripting©
Powered by vBulletin®
Copyright © 2000-2015, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1

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