Suggestion: specify all relevant details as we don’t know what kind of machine you have.
I suspect your machine is a 64bit word size machine. C ints are typically 4 bytes even on 64bit word size machines. Go ints are 8 bytes on these machines. Suggestion2: look at the generated assembly language code for each program. Making sense of compiler output is a very useful skill to learn for benchmarking (& more). > On Feb 3, 2019, at 10:22 AM, Miki Tebeka <miki.teb...@gmail.com> wrote: > > Hi, > > I'm comparing two loops in Go and C. The Go code on my machine is about 3 > times slower than C. I know C can be faster but didn't think it'll be that > faster. Any ideas what's making the Go code slower? > > You can see the code at https://github.com/tebeka/go-c-loop > > Go Code: > package main > > > import ( > "fmt" > "os" > "strconv" > "time" > ) > > > func main() { > n, _ := strconv.Atoi(os.Args[1]) > m, _ := strconv.Atoi(os.Args[2]) > > > sum := int(0) > start := time.Now() > for i := 0; i < 10000000; i++ { > if i%n != m { > sum += n > } > } > > > fmt.Println(time.Now().Sub(start).Seconds(), sum) > } > > > > C Code > #include <stdio.h> > #include <unistd.h> > #include <x86intrin.h> > > > > > int main(int argc,char** argv) { > unsigned long long ull0,ull1; > unsigned int sum=0,n,m; > > > sscanf(argv[1],"%d",&n); > sscanf(argv[2],"%d",&m); > > > ull0 = __rdtsc(); > for(int i=0; i<10000000; i++) { > if(i%n != m) { > sum += n; > } > > > } > > > ull1 = __rdtsc(); > printf("%f %d\n",(ull1-ull0)/2.1e9,sum); > } > > > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.