Posted by

byhisdeeds on February 11, 2009 at 2:28 PM PST

I have the following code that was ported from C that copies ints from

one array to another. Can someone tell me whether they think

that I can gain any performance using another method. I use ByteBuffers

because the data is originaly read as bytes (RGBA) and the COPY function

rearranges the order during the copying process.

private void COPY(ByteBuffer d, ByteBuffer s, int TILE_SIZE, int I0, int J0,

int U0, int V0, int I1, int J1, int U1, int V1, int I2, int J2, int U2, int V2)

{

int i,j,u,v,i0,j0,u0,v0,di0,dj0,du0,dv0,di,dj,du,dv,k0,k;

IntBuffer rps = s.asIntBuffer();

IntBuffer rpd = d.asIntBuffer();

i0=I0; j0=J0; u0=U0; v0=V0;

int TS1 = TILE_SIZE-1;

di0=(I2-I0)/TS1; dj0=(J2-J0)/TS1;

du0=(U2-U0)/TS1; dv0=(V2-V0)/TS1;

di=(I1-I0)/TS1; dj=(J1-J0)/TS1;

du=(U1-U0)/TS1; dv=(V1-V0)/TS1;

for (k0=(TILE_SIZE-1);k0>=0;k0--)

{

i=i0; j=j0; u=u0; v=v0;

for (k=k0;k>=0;k--)

{

rpd.put((v>>1)*TILE_SIZE+(u>>1), rps.get(j*TILE_SIZE+i));

i+=di; j+=dj; u+=du; v+=dv;

}

i0+=di0; j0+=dj0; u0+=du0; v0+=dv0;

}

}