You are comparing apples to oranges( integer vs float64 pow), use integer pow and compare again:
func Pow(a, b int) int { p := 1 for b > 0 { if b&1 != 0 { p *= a } b >>= 1 a *= a } return p } On Friday, August 4, 2017 at 9:20:41 AM UTC+3, Dorival Pedroso wrote: > > I've noticed that this C code: > > #include "math.h" > int main() { > double x = 2.5; > int Nmax = 10000000; > for (int N=0; N<Nmax; N++) { > for (int i=0; i<20; i++) { > pow(x, i); > } > } > } > > can run up to 50x faster than this Go code: > > package main > > import "math" > > func main() { > x := 2.5 > Nmax := 10000000 > for N := 0; N < Nmax; N++ { > for i := 0; i < 20; i++ { > math.Pow(x, float64(i)) > } > } > } > > The C code was compiled with: gcc -O2 ccode.c -o ccode -lm > then run with time ./ccode > > The Go code was compiled with: go build gcode.go > then run with time ./gcode > > I've used the time command on Linux (Ubuntu) to get some estimate. > > So the question is: how can we make the Go code faster? > -- 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.