[알고리즘]

[C++] (MSVC, 최적화 안함)

#include <iostream>
#include "HourMeter.h"
using namespace std;
int fibonacci(const int value) {
	if (value == 0 || value == 1) {
		return 1;
	}
	return fibonacci(value - 1) + fibonacci(value - 2);
};
void main() {
	HourMeter hm;
	int fibValue{ 38 };

	for(int i=0;i<5;i++){
		printf("fibValue: %d\\n", fibValue);
		hm.startMeasure();
		int result = fibonacci(fibValue);
		hm.endMeasure();
		printf("value: %d\\n", result);
	}
}

[Node.js]

function fibonacci(value){
  if(value === 0 || value === 1){
    return 1;
  }
  return fibonacci(value - 1) + fibonacci(value - 2);
}

let result;
let fibValue = 38;

for(let i=0;i<5;i++){
  console.time('alice');
  result = fibonacci(fibValue);
  console.timeEnd('alice');
  console.log(result);
}

[LuaJIT]

function fiboniacci(value)
  if (value == 0 or value == 1) then
    return 1
  end

  return fiboniacci(value - 1) + fiboniacci(value - 2)
end

fibValue = 38
for i=1,5 do
  start_time = os.clock()
  result = fiboniacci(fibValue)
  end_time = os.clock()

  elapsed_time = end_time - start_time

  print("elapsed_time: " .. elapsed_time .. "sec");
  print("result: " .. result)
end

[Golang]

package main

import (
  "time"
)

func fibonacci(value int) int {
  if value == 0 || value == 1 {
    return 1
  }
  return fibonacci(value-1) + fibonacci(value-2)
}

func main() {
	fibValue := 38
	for i:=0;i<5;i++ {
		startTime := time.Now()
		result := fibonacci(fibValue)
		elapsedTime := time.Since(startTime)
		d2 := elapsedTime / time.Millisecond
		println("time: ", d2, ", result: ", result)
	}
}