hafızaya array gibi erişmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
cunku bu matris uzerinde her eleman icin aritmetik islemler yapiyorum. son hali ile her cevrim icin (tum matrisin taranmasi) 32 ms suruyor bu islemler. islemleri yapabilmem icin bana en kolay yontem dizi indisleri ile erismek gozuktu.Arkadaş matris ebatlarının sabit olduğunu söylemiş sonradan, o zaman neden pointer alıp, typecast ve dereference yapıp yine standart şekilde indis kullanarak elemanlara erişiyor. Böyle nasıl bir performans artışı sağlanıyor merak ettim doğrusu?
ornegin:
b>verilerin baslangic adresi
a>codelord'un dedigi sekilde tanimlanmis dizi
mwidth, mheight: matrisin boyutlari
Kod: Tümünü seç
for y:=0 to mheight-1 do
begin
for x:=0 to mwidth-1 do
begin
a1:= ( a(b)^[y ][x ]+a(b)^[y+1][x ]+a(b)^[y+2][x+2])shr 3 ;
a2:= ( a(b)^[y+1][x+1]+a(b)^[y+2][x+2]+a(b)^[y+1][x ])shr 3;
a3:= .......
...
end;
end;
ve ayrica bu verileri bahsettigim b adresinden sonrasina ben yerlestirmiyorum, ben sadece oradan okuyup islem yapabiliyorum.
Coderum Lordum verdiğin kodun asm çıktısı okadar değildir çünkü arada başka registerler falan var. Onlarla ilgili işlemlerde dahildir o koda.
Kayda değer bir performans artışı olduğunu sanmıyorum demişsin. Katılıyorum, olmayabilir. Delphi compilerıda çok güzel optimizasyona yapar Allah için
Bu arada kodda : "[0]" ikincisinde hem sabit hemde 0 verdiğin için optimizasyonda indexleme için yapacağı kodu yazmamış olabilir compiler. Neyse daha çok eşşeğin kulağına su kaçırmayalım 
Kolay gelsin...
Kayda değer bir performans artışı olduğunu sanmıyorum demişsin. Katılıyorum, olmayabilir. Delphi compilerıda çok güzel optimizasyona yapar Allah için


Kolay gelsin...