Last active
November 22, 2024 11:51
-
-
Save lbialy/5ef6ccd5861e2362e228f375b30f510d to your computer and use it in GitHub Desktop.
comparing scala native perf and golang
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// run `go build main.go` | |
package main | |
import ( | |
"fmt" | |
"os" | |
"strconv" | |
) | |
func fibonacci(n int) int { | |
if n <= 1 { | |
return n | |
} | |
prev, current := 0, 1 | |
for i := 2; i <= n; i++ { | |
prev, current = current, prev+current | |
} | |
return current | |
} | |
func main() { | |
if len(os.Args) < 2 { | |
fmt.Println("Usage: go run main.go <number>") | |
return | |
} | |
arg := os.Args[1] | |
n, err := strconv.Atoi(arg) | |
if err != nil { | |
fmt.Printf("Error: '%s' is not a valid integer.\n", arg) | |
return | |
} | |
fmt.Printf("Fibonacci(%d) = %d\n", n, fibonacci(n)) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// run `scala package main.scala --native -o main` | |
import scala.annotation.tailrec | |
def fibonacci(n: Int): Long = | |
@tailrec | |
def loop(n: Int, prev: Long, current: Long): Long = | |
if n == 0 then prev | |
else if n == 1 then current | |
else loop(n - 1, current, prev + current) | |
loop(n, 0, 1) | |
@main def run(args: String*): Unit = | |
if args.isEmpty then | |
println("Usage: run <number>") | |
else | |
try | |
val n = args(0).toInt | |
println(s"Fibonacci($n) = ${fibonacci(n)}") | |
catch | |
case _: NumberFormatException => | |
println(s"Error: '${args(0)}' is not a valid integer.") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
╭─lbialy at vl-d-1325 in ⌁/Projects/foss/tmp/compare-perf-go-scala/scala (⎈ colima|default) | |
╰─λ time ./main 1000 | |
Fibonacci(1000) = 817770325994397771 | |
________________________________________________________ | |
Executed in 13.21 millis fish external | |
usr time 2.88 millis 0.09 millis 2.79 millis | |
sys time 7.66 millis 2.37 millis 5.29 millis | |
╭─lbialy at vl-d-1325 in ⌁/Projects/foss/tmp/compare-perf-go-scala/scala (⎈ colima|default) | |
╰─λ time ./main 1000 | |
Fibonacci(1000) = 817770325994397771 | |
________________________________________________________ | |
Executed in 13.10 millis fish external | |
usr time 2.41 millis 0.13 millis 2.28 millis | |
sys time 6.67 millis 2.43 millis 4.24 millis | |
╭─lbialy at vl-d-1325 in ⌁/Projects/foss/tmp/compare-perf-go-scala/scala (⎈ colima|default) | |
╰─λ time ./main 1000 | |
Fibonacci(1000) = 817770325994397771 | |
________________________________________________________ | |
Executed in 13.21 millis fish external | |
usr time 3.48 millis 0.12 millis 3.36 millis | |
sys time 7.64 millis 2.69 millis 4.95 millis | |
╭─lbialy at vl-d-1325 in ⌁/Projects/foss/tmp/compare-perf-go-scala/scala (⎈ colima|default) | |
╰─λ time ./main 1000 | |
Fibonacci(1000) = 817770325994397771 | |
________________________________________________________ | |
Executed in 9.39 millis fish external | |
usr time 1.95 millis 0.09 millis 1.86 millis | |
sys time 5.93 millis 2.17 millis 3.76 millis | |
╭─lbialy at vl-d-1325 in ⌁/Projects/foss/tmp/compare-perf-go-scala/go (⎈ colima|default) | |
╰─λ time ./main 1000 | |
Fibonacci(1000) = 817770325994397771 | |
________________________________________________________ | |
Executed in 18.27 millis fish external | |
usr time 2.44 millis 0.11 millis 2.33 millis | |
sys time 8.55 millis 2.40 millis 6.15 millis | |
╭─lbialy at vl-d-1325 in ⌁/Projects/foss/tmp/compare-perf-go-scala/go (⎈ colima|default) | |
╰─λ time ./main 1000 | |
Fibonacci(1000) = 817770325994397771 | |
________________________________________________________ | |
Executed in 12.62 millis fish external | |
usr time 3.29 millis 0.09 millis 3.20 millis | |
sys time 7.84 millis 2.09 millis 5.76 millis | |
╭─lbialy at vl-d-1325 in ⌁/Projects/foss/tmp/compare-perf-go-scala/go (⎈ colima|default) | |
╰─λ time ./main 1000 | |
Fibonacci(1000) = 817770325994397771 | |
________________________________________________________ | |
Executed in 12.43 millis fish external | |
usr time 3.52 millis 0.10 millis 3.43 millis | |
sys time 7.93 millis 2.23 millis 5.70 millis | |
╭─lbialy at vl-d-1325 in ⌁/Projects/foss/tmp/compare-perf-go-scala/go (⎈ colima|default) | |
╰─λ time ./main 1000 | |
Fibonacci(1000) = 817770325994397771 | |
________________________________________________________ | |
Executed in 16.87 millis fish external | |
usr time 3.10 millis 0.09 millis 3.01 millis | |
sys time 7.27 millis 1.91 millis 5.36 millis |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment