Re: Repeat efficiency
- Posted by Derek Parnell <ddparnell at bigpond.com> Feb 19, 2003
- 511 views
On Tue, 18 Feb 2003 15:50:58 -0800, <xerox_irs at lvcm.com> wrote: > > Hre's my test of it, maybe i should just use integers, and no floats. > Integer in this test is about 1000 times faster!!!!!!!!!!. > But its just becuase each and every one of the floats has to be allocated > seperatly!!!!!. Thats 9.0 MBs for 1024x768*(32bit-pointer+64bit double > float). The allocate routine is called every time. Is there any way to > change that? > [snip] Here is code that does it three different ways. The fastest is to use a sequence as an integer vector. -------- include machine.e tick_rate(1000) sequence clearb sequence zbuffer sequence cclearb sequence zzbuffer atom e atom z,p,m e = time() clearb = repeat(repeat(0, 1024), 768) zbuffer = clearb for k = 1 to 10 do for i = 1 to 768 do for j = 1 to 1024 do zbuffer[i][j] = floor(1500/134) end for end for end for zbuffer = clearb printf(1, "Integer Matrix %f\n", time() - e) e = time() cclearb = repeat(0, 1024* 768) zzbuffer = cclearb for k = 1 to 10 do for i = 1 to 768 * 1024 do zzbuffer[i] = floor(1500/134) end for end for zzbuffer = cclearb printf(1, "Integer Vector %f\n", time() - e) e = time() m = 4 * 768 * 1024 z = allocate(m) mem_set(z, m, 0) for k = 1 to 10 do p = z for i = 1 to 768 * 1024 do poke4(p,floor(1500/134)) p+=4 end for end for mem_set(z, m, 0) printf(1, "RAM Vector %f\n", time() - e) -- cheers, Derek Parnell