Upgrade to Pro — share decks privately, control downloads, hide ads and more …

あなたとCrystal、いますぐダウンロード

 あなたとCrystal、いますぐダウンロード

合同勉強会2015

Takafumi Yoshida

December 05, 2015
Tweet

More Decks by Takafumi Yoshida

Other Decks in Technology

Transcript

  1. メソッド定義(1)  def greet(name : String) "Hello, #{name}" end puts

    greet(“Kotori”) puts greet(123) 引数の型を指定 コンパイルエラーになる
  2. メソッド定義(2)  def hoge : String "hoge" end def fuga

    : String 123 end 戻り値の型を指定 コンパイルエラーになる
  3. 複合型の指定  array = Array(Int32 | String).new # alias IntString

    = Int32 | String # array = Array(IntString).new array << 1 array << 2 array << "hoge" OK 複合型を指定
  4. 竹内関数  def tarai(x, y, z) return y if x

    <= y tarai( tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y) ) end puts tarai(13, 10, 0)
  5. Rubyの場合  $ ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636)

    $ time ruby tarai.rb 13 real 0m8.899s user 0m8.818s sys 0m0.052s 約9秒
  6. Crystalの場合  $ crystal -v Crystal 0.9.0 [be93828] $ crystal

    build tarai.rb --release $ time ./tarai 13 real 0m0.352s user 0m0.348s sys 0m0.003s 0.3秒 最適化ビルド 約30倍
  7. Javaの場合  public class Tarai { public static int tarai(int

    x, int y, int z) { if(x <= y) return y; return tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y)); } public static void main(String[] args) { System.out.println(tarai(13, 10, 0)); } }
  8. Javaの場合  $ java -version java version "1.8.0_65" Java(TM) SE

    Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode) $ time java Tarai 13 real 0m0.336s user 0m0.316s sys 0m0.026s 0.3秒 ほぼCrystalと同じ