Python,Gambas,Golang Benchmark Test
-
Merhaba arkadaşlar biz #dedeler kanalı olarak benchmark yapalım diye boş bir uğraşa girdik.TC No Algoritması kullanarak ve bunu doğrulayarak 80 bin adet tc kimlik oluşturduk tabi ki bunların kodlarını buradan vermem etik olmaz.Fakat deneme kodlarını verebilirim herhalde neyse.Aşağıda chart biçiminde saniye cinsinden hangi dilin ne kadar sürede bu testi tamamladığını yazıyor.Py2 #1 benim yazdığım kod py 2 # 2 ise kanaldan korns’un yazdığı koddur.Gambas kodunu ise trollerin en büyüğü command yazmıştır.Teşekkürler
Python kodları syntax highlighter'a hata verdirtiyor bu yüzden siteden inceleyebilirsiniz.
Public Sub Main() Dim sayac As Integer Dim liste As New String[] Dim kontrol As String Dim dosya As File dosya = Open "/home/ka1/gamn/tcliste.txt" For Output Append sayac = 0 Do kontrol = tckimlik() If Not liste.Exist(kontrol) liste.Add(kontrol, gb.Language) Print #dosya, kontrol sayac += 1 Print sayac Endif If sayac = 80000 Then Break Endif Loop dosya.Close() End Public Function ilkdokuz() As String Dim numara As Integer 'Randomize numara = Rand(100000000, 999999999) Return Str(numara) End #command
@doganaydin Go kodunu yazınca onu da ekliycem :)
C ile yazmak isteyen varsa kodu atarsanız denerim .
Not:Testler linuxda time ile yapılmıştır.
Test bilgisayarı :
Core i5 2410m 2.4GHZ İşlemci
6 GB Ddr3 1333mhz ram
5200RPM HDD
http://www.enesergn.net/python-2gambas-benchmark-test.py -
Bu arada eğer linuxda çalışabilicek kodlar yazarsanız eklerim grafiğe güzel birşey olur :) Java,Bash script(yazılır herhalde),C vs.
-
şimdi anlayamadığım bir şey var, oluşturduğunuz tc kimlikleri belirli bir algoritma ile oluşturdunuz ( var olan tc kimlik algoritması) ondan sonra da aynı algoritma ile mi doğrulama yaptınız?
bir soru daha soracaktım da unuttum :)
bir de kullandığınız belli bir search algoritması var mı, özellikle 2.5 sn çıkaran arkadaşın kullandığı algoritmayı merak ettim
unbalanced tarafından 16/Haz/15 01:31 tarihinde düzenlenmiştir -
unbalanced bunu yazdı
doğrulamayı nasıl yaptınız? 2.5 saniyede bitirildiğine göre web tabanlı bir doğrulama işlemi yok sanırım, sadece ürettiğiniz kimlik noları, oluşturma algoritmasında test ettiniz sanırım?
Algoritma olarak test ettik hocam çeşitli devlet sitelerinde vs Yani TC No Algoritması doğru kafadan sayı oluşturmuyor
GoLang eklenmiştir. -
tc oluşturma algoritmasını kullanarak oluşturduğunuzu biliyorum ama sanırım sizin şuan yapmak istediğiniz sadece oluşturduğunuz kimlik numaralarının doğruluğunu benchmark testleriyle göstermek.
Merak ettiğim şey en hızlı şekilde doğrulayan kodu görebilmek :) belirli bir algoritma mı kullanmış arakdaş yoksa kendisi mi geliştirmiş. kafam biraz dağınık pek anlaşılır yazamamış olabilirim
-
Go Lang de küçük düzeltmelerle çok başarılı bir süre çıkartıldı ortaya
-
Ekibe nasıl dahil oluyoruz :d
-
go da go f.WriteString(tc) böyle bişey kullanman satır karışmalarına yazdığın stringin bozulmasına vs. neden olmuyor mu ?
edit1 gerçi tckimlik oluşturma süresi yazma süresinden fazla olduğundan dolayı bişey olmayabilir
edit2. yok yok bişey olmaz :D
-
detCode bunu yazdı
go da go f.WriteString(tc) böyle bişey kullanman satır karışmalarına yazdığın stringin bozulmasına vs. neden olmuyor mu ?
edit1 gerçi tckimlik oluşturma süresi yazma süresinden fazla olduğundan dolayı bişey olmayabilir
edit2. yok yok bişey olmaz :D
bilmiyorum hocam onu doganaydın'a sorucan :)
SinusX mesaj atıyorum hocam -
Algoritmayı verirseniz (şu ana kadar yazılanlardan hiçbir şey anlamadım) C, C++ ve C# ile kod yazabilirim.
public class TCKimlik { private int[] _rakamlar = new int[9]; public TCKimlik(params int[] Rakamlar) { if(Rakamlar.Length != 9) { throw new ArgumentException("Dokuz adet rakama ihtiyaç duyulmaktadır!"); } if(Rakamlar[0] <= 0) { throw new ArgumentException("İlk rakam 0 olmamalıdır!"); } for(int i=0; i < 9; ++i) { if(Rakamlar[i] >= 0 && Rakamlar[i] <= 9) { _rakamlar[i] = Rakamlar[i]; } } } public TCKimlik(string Rakamlar) { if(Rakamlar.Length != 9) { throw new ArgumentException("Dokuz adet rakama ihtiyaç duyulmaktadır!"); } if(Rakamlar[0] == '0') { throw new ArgumentException("İlk rakam 0 olmamalıdır!"); } for(int i=0; i < 9; ++i) { if(Rakamlar[i] >= '0' && Rakamlar[i] <= '9') { _rakamlar[i] = int.Parse(Rakamlar[i].ToString()); } } } public string TCKimlikNoOluştur() { int tekler = _rakamlar[0] + _rakamlar[2] + _rakamlar[4] + _rakamlar[6] + _rakamlar[8]; int ciftler = _rakamlar[1] + _rakamlar[3] + _rakamlar[5] + _rakamlar[7]; int tc10 = ((tekler * 7) - ciftler) % 10; int tc11 = (tekler + ciftler + tc10) % 10; StringBuilder sb = new StringBuilder(11); for(int i = 0; i < 9; ++i) { sb.Append(_rakamlar[i]); } return sb.Append(tc10).Append(tc11).ToString(); } public static bool TCKimlikKontrolEt(string TCKimlikNo) { var tckimlikno1 = new TCKimlik(TCKimlikNo.Substring(0, 9)); return (tckimlikno1.TCKimlikNoOluştur() == TCKimlikNo); } }
-
2.Python kodunu ( py #2 ) pypy ile denediğimizde şu sonucu cıkarttı :
0m1.219s
Ek olarak belirtmek isterim : Py #2 de kendi içinde time hesaplaması da var