Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > C# string arama...
Yazar
piedro


avatar

Kayıt: 08.06.2008
22.02.2009-21:50 #57292
neurorebel yazdi
 
Bildiğiniz gibi seçtiğiniz algoritma kötüyse unsafe pointer falan kurtarmaz :) .NET, Perl falan gibi araçların RegEx implementasyonlarının problemi bu :) PATRICIA Trees diye aradığınız zaman çok güzel bir veri yapısı öğreneceksiniz :) (Binary Radix Tree olarak da geçiyor)


unsafe kodla, radix tree yi nasıl karşılaştırdın veya yan yana koydun anlamadım..(radix tree, 3.sınıf veri yapıları konusu olması lazım, yeni birşey değil)





Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
22.02.2009-21:54 #57293
extreme yazdi
 
burakkanmaz yazdi
 


"Ölçüm 2", "Ölçüm 1" e göre 10,7724 kat daha hızlıdır.

////////////////////////////////////////////////////////////////////////////////////////////////////////////

Bu teste pointer olan versiyonu koyarsak eminim Ölçüm 2'yi katlar geçer biggrin



Assembly ile yazarım görürsün kimmiş hızlıwhistling


Yiyosa yaz biggrin





Yazar
piedro


avatar

Kayıt: 08.06.2008
22.02.2009-21:54 #57294
10 katta çok olmuş be Burak çımlaughing süper çalışma oldu;)


burakkanmaz yazdi
 
Ve test sonuçları...

////////////////////////////////////////////////////////////////////////////////////////////////////////////

Ölçümler için http://download.burakkanmaz.net/PerformanceTest.rar linkindeki kodları kullandım.
Ölçümü normal büyüklükte bir veri ile gerçekleştirdim. Bu verinin istatistikleri ;


Ölçüm 1 :
Kod :
static int kacTaneVar(string buyukString,string kucukString){
            int bUzunluk = buyukString.Length;
            int kUzunluk = kucukString.Length;
            int kacTane = 0;
            for (int sayac = 0; sayac <= bUzunluk - kUzunluk; sayac++ )
            {
                if (buyukString.Substring(sayac, kUzunluk) == kucukString)
                    kacTane++;
            }
            return kacTane;
}

Ortalama hesap süresi : 00:00:00.0030346 (Yani 0.0030346 saniye)
Testlerin sonuç resmi :


Ölçüm 2 :
Kod :
System.Text.RegularExpressions.MatchCollection wordColl = System.Text.RegularExpressions.Regex.Matches(cumle,kelime);
MessageBox.Show(wordColl.Count.ToString());

Ortalama hesap süresi : 00:00:00.0002817 (Yani 0.0002817 saniye)
Testlerin sonuç resmi :



Sonuç :

"Ölçüm 2", "Ölçüm 1" e göre 10,7724 kat daha hızlıdır.

////////////////////////////////////////////////////////////////////////////////////////////////////////////

Bu teste pointer olan versiyonu koyarsak eminim Ölçüm 2'yi katlar geçer biggrin






Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
22.02.2009-21:57 #57296
burakkanmaz yazdi
 
extreme yazdi
 
burakkanmaz yazdi
 


"Ölçüm 2", "Ölçüm 1" e göre 10,7724 kat daha hızlıdır.

////////////////////////////////////////////////////////////////////////////////////////////////////////////

Bu teste pointer olan versiyonu koyarsak eminim Ölçüm 2'yi katlar geçer biggrin



Assembly ile yazarım görürsün kimmiş hızlıwhistling


Yiyosa yaz biggrin


Kovasına varmısın iddaya. Extreme menüyü unutmadın heraldebiggrin. Bu kod daha kolayclown





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
22.02.2009-21:59 #57298
extreme yazdi
 
Kovasına varmısın iddaya


Hayır biggrin Yeterince KFC'yi zengin ettim zaten sizlere ısmarlamakla. Benim için artık KFC bitmiştir laughingtongue


piedro yazdi
 
10 katta çok olmuş be Burak çımlaughing süper çalışma oldu;)

Evet bende oha felan dedim biggrin Hiç beklemediğim kadar yüksek çıktı oran. Fakat şunu çok iyi öğrendim, string işlemlerinde C#'ın kendi yerleşik fonksiyonları daha verimliymiş. idea





Yazar
neurorebel


avatar

Kayıt: 15.08.2007
23.02.2009-12:30 #57342
piedro yazdi
 
neurorebel yazdi
 
Bildiğiniz gibi seçtiğiniz algoritma kötüyse unsafe pointer falan kurtarmaz :) .NET, Perl falan gibi araçların RegEx implementasyonlarının problemi bu :) PATRICIA Trees diye aradığınız zaman çok güzel bir veri yapısı öğreneceksiniz :) (Binary Radix Tree olarak da geçiyor)


unsafe kodla, radix tree yi nasıl karşılaştırdın veya yan yana koydun anlamadım..(radix tree, 3.sınıf veri yapıları konusu olması lazım, yeni birşey değil)


konu regular expressions olduğu için. anlayabilmek için bir parser yazmayı deneyebilirsin... demek istediğim, algoritman kötüyse unsafe pointer falan kullanarak programını optimize edemezsin.





Do weird and difficult things.

Yazar
kellad


avatar
istanbul
Kayıt: 21.01.2006
23.02.2009-13:35 #57344
Arkadaşlar regular expressions ayrı bir derya. Tüm kullanımı birkaç sayfa dokümanla anlatılabilir. Ama iş yazmaya gelince bazen bir satır regex yazmak koca bir program yazmak kadar uzun sürebilir. Mümkün olduğunca kullanmaya çalışın. Çok yerde karşınıza çıkacaktır.

Bu sayfada .Net için bazı örnekleri var,
http://www.windowsdevcenter.com/pub/a/oreilly/windows/news/csharp_0101.html

Bu site de çok işe yarar,
http://regexlib.com/CheatSheet.aspx





Decompiling the code of universe.
Listening the cosmic background radiation.
Swimming in Inter Stellar Medium.
Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
26.03.2009-01:10 #58355
Uzun zamandır yazamıyordum, fırsatını bulmuşken yazayım bari:)
Görüyorum ki code ile drift yapmaya çalışıyorsunuz:) Regex ifadeleri bana hep sinir bozucu gelmiştir, zaten amaç değil araç olan şeylere pek ilgim olmadı:) İsmine hasta olduğum regexBuddy aracım var bir adet, kendisi benim yerime regex leri hallediyor, işine karışmıyorum, size de tavsiye ederim:)

To Extreme Burak : Kendi kodunu yazman hoşuma gitti açıkçası:) Kendi verdiğim ödevleri hatırladım:) ODTÜ yarışması ne oldu?

To Normal Burak:) : Araştırmaktan sıkılınca haberim olsun:) MSP olarak ne zaman sunum yapıyorsun:)

Ayrıca C++ kodu ile C# kodu kıyaslanmaz, önemli olan algoritmadır. Nihayetinde .net kodlarıda bildiğiniz gibi native çalıştırılabilir koda derlenip saklanabiliyor. O yüzden JIT derleme zamanı diye bir kayıp olmayabilir de:)

Diğer taraftan MS en verimli kodu yazmıştır demek te olmaz Burak:) Framework ün açılan kodlarında komik durumlara denk gelmek mümkün:) Nihayetinde onu yazanda bir insan evladı:)





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
26.03.2009-01:49 #58360
tarikkranda yazdi
 

To Extreme Burak : Kendi kodunu yazman hoşuma gitti açıkçası:) Kendi verdiğim ödevleri hatırladım:) ODTÜ yarışması ne oldu?


Odtü sorularını çözüp gönderik hocam. c++ kullandık. reklam olsun diye grup adını iucoders koyduk biggrin





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
26.03.2009-02:08 #58365
extreme yazdi
 

Odtü sorularını çözüp gönderik hocam. c++ kullandık. reklam olsun diye grup adını iucoders koyduk biggrin


Hadi bakalım:) Umarım istediğiniz sonucu alırsınız:) iucoders baya bir hit alacak anlaşılan ODTÜ den:)





1 2 3
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb