You are using g 64 bit in Go and 32 bit in C > On Feb 3, 2019, at 12:33 PM, Miki Tebeka <miki.teb...@gmail.com> wrote: > > A bit of profiling shows that the modulo operator takes most of the time: > > 1.77s 1.77s (flat, cum) 100% of Total > . . 2: > . . 3:import ( > . . 4: "testing" > . . 5:) > . . 6: > 10ms 10ms 7:func loop(m, n int) int { > . . 8: sum := int(0) > 30ms 30ms 9: for i := 0; i < 10000000; i++ { > 1.73s 1.73s 10: if i%n != m { > . . 11: sum += n > . . 12: } > . . 13: } > . . 14: return sum > . . 15:} > > > > >> On Sunday, February 3, 2019 at 8:22:54 PM UTC+2, Miki Tebeka 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.