memory copy test results(without memSuite)
I'm checked it but chunk copy is fast . It's misteirous.
and, I don't know uint32_t timer counter is how many cycled.So I don't know the result is correct or not.
The code is here, and these codes located at run_test()
void *m1 = malloc(20*1000*1000);
void *m2 = malloc(20*1000*1000);
void *sm1 = shoot_malloc(20*1000*1000);
void *sm2 = shoot_malloc(20*1000*1000);
void *ss1 = shoot_malloc_suite(20*1000*1000);
void *ss2 = shoot_malloc_suite(20*1000*1000);
uint32_t t1 = tskmon_get_timer_reg();
uint32_t t2,tmp;
int i,off;
console_printf("malloc-ed 20M memcpy\n");
memcpy(m1,m2,20*1000*1000);
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
tmp = ~tmp - t1;
t2 = t2 + tmp;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("malloc-ed 20M memcpy 2m each\n");
off=0;
for(i=0;i<20;i++)
{
memcpy(m1+off,m2+off,2*1000*1000);
off = off + 2*1000*1000;
}
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("malloc-ed 20M dma_memcpy\n");
dma_memcpy(m1,m2,20*1000*1000);
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("malloc-ed 20M dma_memcpy 2m each\n");
off=0;
for(i=0;i<20;i++)
{
dma_memcpy(m1+off,m2+off,2*1000*1000);
off = off + 2*1000*1000;
}
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("shoot_malloc-ed 20M memcpy\n");
memcpy(sm1,sm2,20*1000*1000);
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("shoot_malloc-ed 20M memcpy 2m each\n");
off=0;
for(i=0;i<20;i++)
{
memcpy(sm1+off,sm2+off,2*1000*1000);
off = off + 2*1000*1000;
}
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("shoot_malloc-ed 20M dma_memcpy\n");
dma_memcpy(sm1,sm2,20*1000*1000);
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("shoot_malloc-ed 20M dma_memcpy 2m each\n");
off=0;
for(i=0;i<20;i++)
{
dma_memcpy(sm1+off,sm2+off,2*1000*1000);
off = off + 2*1000*1000;
}
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("malloc to shoot_malloc-ed 20M memcpy\n");
memcpy(sm1,m2,20*1000*1000);
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("malloc shoot_malloc-ed 20M memcpy 2m each\n");
off=0;
for(i=0;i<20;i++)
{
memcpy(sm1+off,m2+off,2*1000*1000);
off = off + 2*1000*1000;
}
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("shoot_malloc to malloc 20M memcpy\n");
memcpy(m1,sm2,20*1000*1000);
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("shoot_malloc to malloc 20M memcpy 2m each\n");
off=0;
for(i=0;i<20;i++)
{
memcpy(m1+off,sm2+off,2*1000*1000);
off = off + 2*1000*1000;
}
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
t2 = ~tmp - t1 + t2;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("malloc to shoot_malloc-ed 20M dma_memcpy\n");
dma_memcpy(sm1,m2,20*1000*1000);
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
tmp = ~tmp - t1;
t2 = t2 + tmp;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("malloc shoot_malloc-ed 20M dma_memcpy 2m each\n");
off=0;
for(i=0;i<20;i++)
{
dma_memcpy(sm1+off,m2+off,2*1000*1000);
off = off + 2*1000*1000;
}
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
tmp = ~tmp - t1;
t2 = t2 + tmp;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("shoot_malloc to malloc 20M dma_memcpy\n");
dma_memcpy(m1,sm2,20*1000*1000);
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
tmp = ~tmp - t1;
t2 = t2 + tmp;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
t1 = tskmon_get_timer_reg();
console_printf("shoot_malloc to malloc 20M dma_memcpy 2m each\n");
off=0;
for(i=0;i<20;i++)
{
dma_memcpy(m1+off,sm2+off,2*1000*1000);
off = off + 2*1000*1000;
}
t2 = tskmon_get_timer_reg();
if(t2<t1)
{
tmp= 0;
tmp = ~tmp - t1;
t2 = t2 + tmp;
}
else
{
t2 = t1 -t2;
}
console_printf("%d\n",t2);
And result is: (printf has no %u so I used %d(signed))
malloc-ed 20M memcpy
-485806
malloc-ed 20M memcpy 2m each
-71147
malloc-ed 20M dma_memcpy
-272364
malloc-ed 20M dma_memcpy 2m each
-524067
shoot_malloc-ed 20M memcpy
-484381
shoot_malloc-ed 20M memcpy 2m each
-81456
shoot_malloc-ed 20M dma_memcpy
-768859
shoot_malloc-ed 20M dma_memcpy 2m each
-527604
malloc to shoot_malloc-ed 20M memcpy
-561515
malloc shoot_malloc-ed 20M memcpy 2m each
-76210
shoot_malloc to malloc 20M memcpy
-494179
shoot_malloc to malloc 20M memcpy 2m each
-77837
malloc to shoot_malloc-ed 20M dma_memcpy
-266705
malloc shoot_malloc-ed 20M dma_memcpy 2m each
-513931
shoot_malloc to malloc 20M dma_memcpy
-268545
shoot_malloc to malloc 20M dma_memcpy 2m each
-537939