Решил я короче потестить 2 идентичных(по синтаксису, личное мнение) языка Go и C. Написал 2 одинаковых(надеюсь) скрипта для анализа.
main.go
package main
import "fmt"
func fibonaci(n int64) int64 {
if n == 1 || n == 0 {
return n
}
return fibonaci(n-1) + fibonaci(n-2)
}
func main() {
fmt.Printf("%v", fibonaci(45))
}
main.c
#include <stdio.h>
long fibonaci(long n){
if(n == 1 || n == 0)
return n;
return fibonaci(n - 1) + fibonaci(n - 2);
}
int main() {
printf("%ld", fibonaci(45));
}
Сборка и тесты го делаю так:
#go build
#time ./gopractice
1134903170
real 0m5,508s
user 0m5,511s
sys 0m0,000s
Сборка и тесты Си делаю так:
#gcc main.c
#time ./a.out
1134903170
real 0m8,353s
user 0m8,348s
sys 0m0,005s
Доп инфа
gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
go version
go version go1.21.0 linux/amd64