Arrayのクリア

ふと思いついてArrayのデータをクリアする方法をいろいろ試してみる。
超テケトーコード。

// F#のバージョン: 1.9.2.9
////// Array.fillを使う
let arr = Array.create 1024 0
let rec for_arr t arr f = match t with
    | 0 -> ()
    | n -> (f arr); (for_arr (n-1) arr f)
let clear arr = Array.fill arr 0 1024 0
do for_arr 1000000 arr clear
////// Arrayを生成しなおす。
let arr = Array.create 1024 0
let rec for_arr t arr f = match t with
    | 0 -> ()
    | n -> (f arr); (for_arr (n-1) arr f)
let clear arr = 
    let test = (Array.create 1024 0) in ()
do for_arr 1000000 arr clear
////// 一つずつつめなおす。
let arr = Array.create 1024 0
let rec for_arr t arr f = match t with
    | 0 -> ()
    | n -> (f arr); (for_arr (n-1) arr f)
let clear arr = Array.iteri (fun i _ -> arr.(i) <- 0) arr
do for_arr 1000000 arr clear

もちろんというかなんというか、Array.fillを使うのが一番早い。
生成しなおす方法だと1/10、一つずつつめなおす方法だと1/40くらいの速度になった。

なんでこんなもの調べてるのかというと、Array2にはfillがないので、どうしたものだろうと。