(* check wether reference update is slower of faster than passing parameter between functions *) let rif = ref 0 in let endtime = int_of_string Sys.argv.(1) in let mode = Sys.argv.(2) in let rec use_refs time = rif := !rif + 1; if time>0 then use_refs (time-1) in let rec use_arg time arg = if time>=0 then use_arg (time-1) (arg+1) else arg in let main_ref () = use_refs endtime in let main_arg () = use_arg endtime 0 in let main () = match mode with | "ref" -> main_ref (); !rif | "arg" -> main_arg () | _ -> ~-1 in print_int (main ()); print_newline()