ikarus/benchmarks.larceny/src/diviter.sml

37 lines
1.1 KiB
Standard ML

(******************************************************************************
* File: diviter.sml
* Description: DIV benchmarks
* Author: Richard Gabriel
* Created: 8-Apr-85
* Modified: 19-Jul-85 18:28:01 (Bob Shaw)
* 23-Jul-87 (Will Clinger: translated into Scheme)
* 4-May-94 (Will Clinger: translated into SML)
* 24-Jun-99 (Will Clinger: split into two files)
* Language: Standard ML
* Status: Public Domain
******************************************************************************)
(* DIV2 -- Benchmark which divides by 2 using lists of n []'s. *)
fun create_n n =
let fun loop (n, a) =
if n = 0
then a
else loop (n-1, []::a)
in loop (n, [])
end
val ll = create_n 200
fun iterative_div2 l =
let fun loop ([], a) = a
| loop (x::y::z, a) = loop (z, x::a)
in loop (l, [])
end
fun div_iter (n) =
run_benchmark ("diviter", n, fn () => iterative_div2 ll,
fn (x) => length x = 100)
fun main () = div_iter (diviter_iters)