29.8.09

Profiling

Merhaba arkadaşlar bu ay aklımızda bir fikir oluşması için kod analizinden bahsedeceğim. Kod analizinden bahsederken inceleyeceklerimiz; yazdığımız dot net kodunun çalışma zamanını incelemek, hangi metodda ne kadar zaman harcadığımızı görmek, programının ne kadar bellek kullandığını görmek ya da metodların kaç kez çağırıldığını farketmek ve buna benzer pek çok şeyi içerecek. Bunu yaparken visual studio 2008'e ek olarak

profiler

adresinden dotTracer isimli deneme sürümü olan program ile inceleme yapacağız. İnternette pek çok profilerlar mevcut. Arzu eden ücretsiz bulabileceği programları da deneyebilir.

Deneme amaçlı inceleyeceğimiz kod ise yapay zeka dersi için yazdığım

bir işlem

adresinde bahsettiğim kod olacak. Uzun hesaplamalar barındırdığından incelememiz için uygun olacağını düşündüm.

Profilerı kurduktan sonra visual studio' u açınca yeşil renkli start debugging butonun yanında start profiling butonun geldiğini farkediyoruz. Profile edeceğimiz projeyi açtıktan sonra bu butona basarak işlemi başlatıyoruz. Karşımıza 2 seçenek geliyor performance ya da memory profiling. Buradan istediğimizi seçerek işlemimize devam ediyoruz.

Kodu çalıştırıp bir işlem çözdükten sonra programı kapattığımızda inceleme ekranı ile karşılaşıyoruz.

Main thread bizim programızın ne kadar açık kaldığını gösteriyor. Tüm değerler ms cinsinden verişmiştir. Main thread 1 kere çağırılmış buna karşılık olarak 6 sayıyla hesap yapan hesapla fonksiyonu ise 3516060 kere çağırılmış. Tüm ihtimalleri denememiz için bu fonksiyonu kaç kez çağırdığımızın net sayısını bulmak kodu inceleyerek çok zor olurdu.

Daha detaylar incelemelere baktığımızda ToString fonksiyonun bile ne kadar çağırıldığını görebiliyoruz. Örneğin benim bu kodumda 10548180 kere çağırılmış. ToString fonksiyonunun performansı bu kadar düşüreceğini düşünmezdim bile yazarken. ToString in gereksiz olduğu yerleri kaldırırsam kodun daha hızlı çalışacağını bu sayede görmüş oldum.

Program 16 msde kapanmış. Kapanırken kaydettiğim veriler ya da dispose edeceğim fazla objectler olmadığından kapanış kısa sürmüş olabilir. Zaten kapanırken hangi metodların çağırıldığına bakıp bunu anlayabiliriz. Bu şekilde performans açısından daha verimli kodlar yazabiliriz.

Aynı şekilde profilinge başlarken memory profilingi seçersek çalışma anında dump memory butonu ile ne zaman istersek programımızda hangi nesne türünden ne kadar yarattık ya da stacki ne kadar kullandık, çöp toplarken ne kadar memory harcadık, uygulamamız çalışırken ne kadar hafıza kullanıyor bunu ayrı ayrı görebiliriz.

Memory incelemesindeki değerler byte ile ifade ediliyor. Bu şekilde değişkenlerimizin ne kadar yer fark eder ona göre değişimler yapabiliriz.


Uğur Atmaca

20.8.09

About the Athletics

At the moment we all following the 12th IAAF World Championships in Athletics Berlin-2009. When I thought about athletics; pentathlon , decathlon and like others are affecting me cause of being real war on athletes. Know that doing always same thing or work on the same branch is easy than others. In contrast decathlon athletes are racing at ten branches in two days.
We should accept that racing with ten branches is harder than running only 100m. Therefore what I am saying is the real athletes are doing these jobs.


PS:
Except Usain Bolt. He is doing impossible things.
Iron Man race is hardest sport. It shows your hardiness.

10.8.09

Laptop Soğutucu

Gerekli Malzemeler

Kesilebilecek Usb kablo (ya da adaptör)
Karton kutu
Bozuk power supply (ya da fan)

Ne yapacagız? Fanımızı alacagız ya da power supply ı kırıp içinden fanını cıkaracagız. Daha sonra ne yapacagız? Usb kablomuzu keseceğiz ya da adaptörün ucundan enerji alacagız. Usb de 4 kablonun biri data+ digeri data- bunlar mavi ve beyaz ise geriye kalan ikisi +5v ve ground sa bize bunlar gereklidir. Ne yaparız bunları fanın kırmızı siyah kablolarına ayrı ayrı baglarız. Sonra kartona fan tam oturacak bicimde delikler açar resimdeki gibi laptop sogutucumuzu yapmıs oluruz.






Usb kullanmanın avantajı az yer kaplaması.
Adaptörün avantajı 5v dan fazla oldugunu varsayarsak daha çok sogutması.
Usb kullanmanın dezavatajı usb girişlerimizi bosyere kullanması.