Delphi de şimsek hızında işlemler

Başlatan bunalmis, 31 Aralık 2009, 00:24:53

wsxwsx

Şu anlattığınız işlerle uygun program yazmam vakit alır. uğraşmam için sebep yok.   Bu senin bir işin. Kendin uğraşmalısın.  Fakat olayın delphi ile ve yeterli hızda yapılabileceğini gösterebilirim. Bu amaçla sizce çok zaman alan   fakat ASM ile hızlandırdığınız daha basit bir işlemi söylerseniz yapıp göstereyim.  istediğiniz gibi IO işlemi olmasın da başka bir işlem olsun. Aslında çok uzun sürmeyen bir işlemin bir kaç bin kere tekrarı da olabilir.  Olayın asm kullanmadan yeterli hızda yapılabileceğini göstermek isterim. Bunu görünce, kendiniz yapabilirsiniz.

ben bir program yaptım. bilgisayara saniyede 100kB veri geliyor. Bu veriyi hafızada biriktirip her bir baytını değerlendiriyorum. hem de en az 10 kere. buna göre bazı işlemler yapılıyor.  gelen bilgileri birileri kaydedip incelese bile hiç bir işine yaramıyor. çünkü veriler şifreli.

mevcut 100kb işlenirken arka planda diğer 100kB veri  geliyor.  ASM ile hiç işim olmuyor.  

Yukarıda bahsettiğim 100kB veriyi dosyaya yazmıyorum. tüm işlemler hafızada oluyor. Belki de sizin hız sorunu dosya oluşturmanızdan kaynaklanıyor. memorystream kullanabilirsiniz.  dosyaya gerek yok.

z

Ben anlayacagimi anladim.

Son bir sey soyleyip kapatacagim konuyu.

Eger program yaziyorsaniz proje makinaniz kesinlikle 4 cekisli ful aksesuar, turbo, otomatik vites, sun roooflu olmasin.

Yoksa yazdiginiz kodlarin roket gibi uctugunu sanirsiniz. Tamam kodlarinizi varsa boyle makinelerde yazin ama denemelerinizi cok mutevazi makinelerde yapin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

birkan

Keşke konu başlığına "Delphi de şimsek hızında işlemler" değilde "Delphide satır içi asm kullanımına örnek" gibi bişeyler yazsaydınız. Yıllardır C asm tartışması yetmiyormuş gibi birde delphi asm tartışması başlatmışsınız. İnsanlar programımın burasını asm ile yazarsam bir miktar hız kazanırım dediği yerleri asm ile yazsınlar buna kimse yanlış diyemez zaten. Ama benim şahsi görüşüm, belli bir yaştan sonra insan eğer asm ile yazdığı kodlardan çok çok bişeyler kazanmamışsa kaybettiği saçlara, yüzundeki kırışıklıklara, yıllarını sandalyede kod yazarak geçirdiği için damar sertliği, kolesterol, trigliseritlere çok üzülüyor. Onun için size bir tavsiye eğer çok çok gerekli değilse asm kullanmayın, yüksek seviyeli dil kullanın, bırakın siz eskiyeceğinize cpu eskisin. Artan zamanı hayata ve sevdiklerinize ayırın.

z

Birkan

Sırf asm yazmış olmak için asm kodlama yapan enayidir.

Asm yazmak gerekiyorsa yazılır. Bunun getirisi de hızdır.

Bunda hepimiz hemfikiriz.

Programın neresinin asm ile yazılmasına karar vermek için kesinlikle asm bilmek gerekir.

Asm bilmeyenin hız konusunda söyleceği tüm laflar boştur, havadadır, laf olsun diye konuşuyor demektir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fatihkuzucu

Ne getirisi olacak. Saçma işlerin peşinde zaman harcıyorsunuz. Gereği varsa yazarsınız kimse size müdahele etmiyor.

-- Su anda satın alınabilecek bir pc hızı nedir?

P3 400mhz 256mb ramli bir makine satan veya satın alan varmıdır?
Yoksa en az 1.8x2 GHz 160hdd 1gb ramli en bayat laptop 400 dolarlara satılıyor.

-- Hız merakı birde embeded da var. Sanırım 4 mhz lik bir mcu ile harikalar yaratma mazoşisti çok etrafta.
70 mhz lik bir arm7 kaç dolar?

Bu 2 örneğe bakıp hala asm diye tutturulunca....

Alıntı yapılan: "bunalmis"Sırf asm yazmış olmak için asm kodlama yapan enayidir.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

z

Sen bu kafayla en fazla teknoloji ile uğraşırsın.

Ama birbileri daima senden bir kaç adım önde gider ve  yüksek teknolojiyle uğraşır.

Sen de onların teknolojisini alır kullanırsın.

2+2=4
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

@bunalmis hocam boşverin siz asm'yi hızı, hıza ihtiyacınız varsa daha güçlü bir işlemci alın, hatta yapılmış olan uygulamalar vardır onları kullanın üretip bu ülkenin teknolojisini geliştirmeye gerek yok, ünlü bir düşünürümüzün deyişiyle "yapılmışı var". Bizi leylekler getirdi bu arada bilmiyor muydunuz dandik bir işlemciyle bile multithread işlem yapılabiliyor. Bu kadar teknolojiyle iç içe olan bir insansınız hiç mi bir işlemcinin yapısını incelemediniz?


Geyik kısmı geçip gerçeğe dönersek ipuçları için teşekkürler ayrıca yapacağınız programda dosyayı okurken işleyip ram e atarsanız, atarkende bi progress bar koymanız yeterli olur. Sonuçta dosyayı gösterir göstermez cihazınız işlemeye başlamıycak. Usbden bilgi atarken işiniz zor gibi onada bir hizmet oluşturursanız pcden yeterince vakit çalabileceğinizi düşünüyorum.

asm'siz hayat düşünülmez ;)

z

Neyse geyigi birakalim.

Asm icin atip tutacak arkadaslar lutfen konulara maydonoz olmasin.
Bu baslik oldukca ciddi bir baslik.

Konuyla gercekten ilgili aradaslara soruyorum.

if ((a=10) or (a=20)) then
   begin
        .........
   end;


Isleminde derleyici, a=10 ve a=20 testi icin her defasinda a degiskenini okuyor, cpu registerine atiyor ardindan registeri sabit deger ile karsilastiriyor.

Bu kod nasil daha hizli calisacak hale getirilir?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

şöyle bi mantıkla gidilebilir asmsi çok kolay olur gibi

sayıyı REG1 e at
REG2 ye "10" yükle
çıkarma yap // 10 mu?
sıfır mı? evet se gideceği yere
hayırsa REG2yi bi daha çıkar // 20 mi?
sıfır mı? evet se yine gideceği yere
hayırsa devam et

z



Bu islemi asm kodlayinca zaten sorun yok. Delphi kodlamada yontemi varmi diye soruyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

wsxwsx

Alıntı yapılan: "bunalmis"
if ((a=10) or (a=20)) then
   begin
        .........
   end;
Isleminde derleyici, a=10 ve a=20 testi icin her defasinda a degiskenini okuyor, cpu registerine atiyor ardindan registeri sabit deger ile karsilastiriyor. Bu kod nasil daha hizli calisacak hale getirilir?
Hızı ölçmek için işlemlerin başında ve sonunda zaman kontrolü yapılabilr. fakat işlemin kendisi çok kısa sürüyorsa, bir döngü içinde 50 bin kere filan çalıştırıp 50 bin tanesi ne kadar sürede hesaplanmış şeklinde bakılır.

Şu anki hızınız nedir?  ne kadar hızlı olması lazım? ona göre bir deneme yapıp bildireyim.

vebsel

hocam
benim aklıma şu geliyor  windows multitasking bir çalışmaya sahip
olduğu için işlem hızı için size ayrılan süre size yeterince hızlı gelmeyebilir.
bu sebepten yaptığınız programa windows ta öncelik verilirse  windows diğer  programlarla  ilgilenmeyip vaktini size ayırır ve programınız daha hızlı çalışır gibi geliyor. belki yazdığım şeyin sizin programınızla alakası olmayabilir ama genede faydalı olabilir.