• Forum vBulletin altyapısından Xenforo altyapısına geçirildi, bu sebeple eski şifreleriniz ile foruma giriş yapamayacaksınız, parolamı unuttum adımından mailiniz ile şifre sıfırlayarak giriş yapabilirsiniz.

    Üyeliklerinde geçerli bir mail adresi olmadığı için sıfırlama yapamayacak kullanıcılar forum kullanıcı adlarını ve yeni şifrelerini yazarak info@maxigame.org adresine şifre sıfırlamak istediklerine dair bir mail göndersinler şifrelerini sıfırlayıp mail adreslerini güncelleyeceğiz. Şifreniz sıfırlandıktan sonra foruma giriş yapıp tekrar istediğiniz gibi değiştirebilirsiniz.

C# Yüksek performansta kod yazmak

  • Konuyu başlatan Konuyu başlatan Iwa
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Iwa

Aileden
Aktiflik
K.Tarihi
26 Eyl 2009
Mesajlar
235
Puanı
97
kakbgo.png



Yüksek Performansta Kod Yazmak

15711.png

"" yerine string.Empty kullanın.
15711.png

Bir şeyin boş olup olmadığını kontrol etmek için string.IsNullOrEmpty
kullanın.
15711.png

Try kullanırken eğer Catch'tan birşey almıyacaksanız
Catch (Exception ex) yerine sadece Catch kullanın.
15711.png

Sayı değişkenlerinin abartılı olup olmıyacağına dikkat edin.
15711.png

Sayı değişkenini 1 arttırırken i++ düşürürken i-- kullanın.
15711.png

Eğer new methodunu kullanıyorsanız mümkünse değişken
tanımlamadan kullanın.

15711.png


[BILGI]Hepsi tüm .NET tabanlı programlama dilerinde geçerlidir.(VB.Net,VC++ vs.)[/BILGI]
 
Son düzenleme:
arkadaşım şimdi benim program vardı, cpu kullanımı için performancecounter ekledim ama sorun da burda toolu ekleyince debuga bastığımda yavaş açılıyor.
sadece debug değil normal açarkende releasede böyle

yazı ile yaratıp tanımladım bu seferde cpuyu ölçmüyor

hal çaresi nedir bunun
 
Döngü ile regedit arasında uğraşmayın, benim gibi regedit silinirken, restart buton'una bastığımda sizinde pc'niz açılamayabilir, format atmak zorunda kalabilirsiniz.

----------

arkadaşım şimdi benim program vardı, cpu kullanımı için performancecounter ekledim ama sorun da burda toolu ekleyince debuga bastığımda yavaş açılıyor.
sadece debug değil normal açarkende releasede böyle

yazı ile yaratıp tanımladım bu seferde cpuyu ölçmüyor

hal çaresi nedir bunun

2-3 cpu örneği bende baktım, bendede yavaş açıldı, nedense sadece cpu okumada oluyor, % olarak alırken.
 
arkadaşım şimdi benim program vardı, cpu kullanımı için performancecounter ekledim ama sorun da burda toolu ekleyince debuga bastığımda yavaş açılıyor.
sadece debug değil normal açarkende releasede böyle

yazı ile yaratıp tanımladım bu seferde cpuyu ölçmüyor

hal çaresi nedir bunun
Performance counteri threadda çalıştırırsan açılışta normal hızıyla açılır program fakat performance counter yüklendiğinde çalışmaya başlar. Bu api ile de yapılıyordu yanlış hatırlamıyorsam, api daha performanslı çalışır.

Döngü ile regedit arasında uğraşmayın, benim gibi regedit silinirken, restart buton'una bastığımda sizinde pc'niz açılamayabilir, format atmak zorunda kalabilirsiniz.

----------



2-3 cpu örneği bende baktım, bendede yavaş açıldı, nedense sadece cpu okumada oluyor, % olarak alırken.
Performance counteri tanımlarken yavaş oluyor, okumada sorun yok.
 
using System.Threading;


Kod:
        public void Yenile()
        {
            PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time","_Total");
            while (true)
            {
                Thread.Sleep(200);
                progressBar1.Value = (int)pc.NextValue();
            }
        }

Form loada yazılacak kodlar:
Kod:
            CheckForIllegalCrossThreadCalls = false;
            new Thread(new ThreadStart(Yenile)).Start();

Şöyle anlatıyım açtığımız voidi ayrı bir program gibi düşün bir kod işlerken o voidin içindeki kodlar işleyen kodun bitmesini beklemez aynı anda işler.

Kod açıklamaları

CheckForIllegalCrossThreadCalls = false: Thread içindeyken formdaki objelere erişirken crossthread denetliyor default değeri true olduğu için hata veriyor, bunu kullanmadan diğer yöntemi var o yöntem uzun olduğu için bunla yapıyoruz.

new Thread(new ThreadStart(Yenile)).Start(): Yenile voidini threadda açıyoruz, tekrar Thread(Class) ve ya ThreadStart(delegate) bu kodları kullanmayacağımız için değişken tanımlamadan direk new yazıyoruz.

while (true): Sınırsız döngü.

Thread.Sleep(n): Belirtilen sayı kadar kodu orada bekletir, 200 yazmıştım 200 milisaniye bekler kod işler.

progressBar1.Value = (int)pc.NextValue():Burada progressbarı ayarlıyoruz, NextValue nin return değerinin tipi float virgüllü sayılar alabilir progressbardaki Valuenin ise int, int virgüllü sayılar alamıyacağı için (int) yazarak inte çeviriyoruz virgüllü sayılar yuvarlanıyor.
 
Son düzenleme:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst