Yup. Using int32 in Go reduces the difference to 1.5. Thanks On Sunday, February 3, 2019 at 8:35:46 PM UTC+2, Robert Engels wrote: > > Also the go program is most likely using 64 bit math. Use int32 to compare > it correctly. > > On Feb 3, 2019, at 12:31 PM, Robert Engels <ren...@ix.netcom.com > <javascript:>> wrote: > > Don’t use rtdsc in the C program use gettimeofday to ensure you are > comparing the same. > > On Feb 3, 2019, at 12:22 PM, Miki Tebeka <miki....@gmail.com <javascript:>> > 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...@googlegroups.com <javascript:>. > 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...@googlegroups.com <javascript:>. > 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.