Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22248

Why `memmove` function has significant difference in two different computers?

$
0
0

I've tried to run the following C code from two different computers.

#include <string.h>int a[100000];int main(){    for(int sz = 100000; sz > 1; sz --){        memmove(a, a+1, 4*(sz - 1));    }}

Computer A uses 800ms, while computer B uses 6200ms. The running time of B is always far more than A.

Environment

compile command

Shell is bash.And the -O gcc command doesn't influence runtime.

gcc myfile.c -o mybin time ./mybin

Computer A

gcc 9.3.0

glibc: ldd (Ubuntu GLIBC 2.31-0ubuntu9) 2.31

uname_result(system='Linux', release='5.4.0-100-generic', machine='x86_64')

CPU: Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz

Computer B

gcc 9.3.0

glibc: ldd (Ubuntu GLIBC 2.31-0ubuntu9.2) 2.31

uname_result(system='Linux', release='4.4.0-210-generic', machine='x86_64')

CPU: Intel(R) Xeon(R) Platinum 8369B CPU @ 2.70GHz

Question

Then I run the following file on same virtual machines, with different kernal version(4.4.210-0404210-generic x86_64 and 5.4.0-113-generic x86_64) with gcc 9.3.0. Two test cost less than 500ms.

#include <string.h>#include <time.h>#include <stdio.h>#define TICK(X) clock_t X = clock()#define TOCK(X) printf("time %s: %g sec.\n", (#X), (double)(clock() - (X)) / CLOCKS_PER_SEC)int a[100000];int main(){    TICK(timer);    for(int sz = 100000; sz > 100; sz --){        memmove(a, a+1, 4*(sz - 1));    }    TOCK(timer);}

How can I find the cause?


Viewing all articles
Browse latest Browse all 22248

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>