流行り、だそうなのでハロワってみる
fib.c
#include <stdio.h> int fib (int n) { if ( n <= 2 ) { return 1; } return fib(n - 1) + fib(n - 2); } int main(int argc, char *argv[]) { int n = atoi(argv[1]); printf("%d\n", fib(n)); return 0; }
fib.go
package main import ( "fmt" "os" "strconv" ) func fib(n int) int { if n <= 2 { return 1 } return fib(n - 2) + fib(n - 1) } func main() { n, _ := strconv.Atoi(os.Args[1]) fmt.Printf("%d\n", fib(n)) }
コンパイル
$ gcc -o c.out fib.c $ gccgo -o go.out fib.go
実行
$ time ./c.out 45 1134903170 real 0m5.939s user 0m5.932s sys 0m0.000s $ time ./go.out 45 1134903170 real 0m10.412s user 0m10.392s sys 0m0.008s
へぇ
参考
$ time ./fib.pl 45 1134903170 real 12m33.123s user 12m32.064s sys 0m0.232s $ perl --version This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi (with 80 registered patches, see perl -V for more detail) Copyright 1987-2011, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.