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 [email protected].
For more options, visit https://groups.google.com/d/optout.