Typed Racketのお勉強 (12)
7 Optimization in Typed Racket
Typed Racketは型の情報を活かして最適化を行います
- 最適化を止めるには
#lang typed/racket #:no-optimize
を使う Real
よりもFloat
といったように、型を具体的に指定すると効果的- リストがnullでないことがわかっている場合は明示してやるとnullチェックが省略される
たとえば整数2個のリストだとわかっていれば
(: sum2 (-> (Listof Integer) Integer))
(define (sum2 l) (+ (car l) (cadr l)))
((Listof Integer)
は0個以上のIntegerのリスト)
よりも
(: sum2 (-> (List Integer Integer) Integer))
(define (sum2 l) (+ (car l) (cadr l)))
の方がいいということですね
Vectorも同様
といってもStructでいいケースではStructを使ったほうが適切で速くなります