add to_string function
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
proj
|
||||||
|
proj.du
|
||||||
|
proj.ud
|
||||||
22
rope.sml
22
rope.sml
@@ -13,6 +13,7 @@ exception Size
|
|||||||
exception Ins
|
exception Ins
|
||||||
exception Substring
|
exception Substring
|
||||||
exception Delete
|
exception Delete
|
||||||
|
exception To_string
|
||||||
|
|
||||||
fun size rope =
|
fun size rope =
|
||||||
case rope of
|
case rope of
|
||||||
@@ -374,3 +375,24 @@ fun delete start length rope =
|
|||||||
in
|
in
|
||||||
t
|
t
|
||||||
end
|
end
|
||||||
|
|
||||||
|
fun to_str acc rope =
|
||||||
|
case rope of
|
||||||
|
N0 str =>
|
||||||
|
(str::acc)
|
||||||
|
| N1 t =>
|
||||||
|
to_str acc t
|
||||||
|
| N2 (l, _, _, r) =>
|
||||||
|
let
|
||||||
|
val acc = to_str acc r
|
||||||
|
in
|
||||||
|
to_str acc l
|
||||||
|
end
|
||||||
|
| _ => raise To_string
|
||||||
|
|
||||||
|
fun to_string rope =
|
||||||
|
let
|
||||||
|
val lst = to_str [] rope
|
||||||
|
in
|
||||||
|
String.concat lst
|
||||||
|
end
|
||||||
|
|||||||
39
utils.sml
39
utils.sml
@@ -3,13 +3,13 @@ fun time_func title f =
|
|||||||
val title = String.concat ["Starting " , title , "..."]
|
val title = String.concat ["Starting " , title , "..."]
|
||||||
val _ = (print title)
|
val _ = (print title)
|
||||||
val start_time = Time.now()
|
val start_time = Time.now()
|
||||||
val start_time = Time.toMilliseconds start_time
|
val start_time = Time.toNanoseconds start_time
|
||||||
val x = f()
|
val x = f()
|
||||||
val end_time = Time.now()
|
val end_time = Time.now()
|
||||||
val end_time = Time.toMilliseconds end_time
|
val end_time = Time.toNanoseconds end_time
|
||||||
val time_diff = end_time - start_time
|
val time_diff = end_time - start_time
|
||||||
val time_diff = LargeInt.toString time_diff
|
val time_diff = LargeInt.toString time_diff
|
||||||
val time_took = String.concat ["took", time_diff, " ms\n"]
|
val time_took = String.concat ["took ", time_diff, " nanoseconds\n"]
|
||||||
val _ = (print time_took)
|
val _ = (print time_took)
|
||||||
in
|
in
|
||||||
x
|
x
|
||||||
@@ -19,9 +19,15 @@ fun run_txns arr =
|
|||||||
Vector.foldl
|
Vector.foldl
|
||||||
(fn ((pos, del_num, ins_str), rope) =>
|
(fn ((pos, del_num, ins_str), rope) =>
|
||||||
let
|
let
|
||||||
val rope = if del_num > 0 then delete pos del_num rope else rope
|
val rope =
|
||||||
|
if del_num > 0
|
||||||
|
then delete pos del_num rope
|
||||||
|
else rope
|
||||||
val str_size = String.size ins_str
|
val str_size = String.size ins_str
|
||||||
val rope = if str_size > 0 then insert pos ins_str rope else rope
|
val rope =
|
||||||
|
if str_size > 0
|
||||||
|
then insert pos ins_str rope
|
||||||
|
else rope
|
||||||
in
|
in
|
||||||
rope
|
rope
|
||||||
end)
|
end)
|
||||||
@@ -34,12 +40,27 @@ fun run_txns_time title arr =
|
|||||||
time_func title f
|
time_func title f
|
||||||
end
|
end
|
||||||
|
|
||||||
|
fun run_to_string rope =
|
||||||
|
to_string rope
|
||||||
|
|
||||||
|
fun run_to_string_time title rope =
|
||||||
|
let
|
||||||
|
val f = (fn () => run_to_string rope)
|
||||||
|
in
|
||||||
|
time_func title f
|
||||||
|
end
|
||||||
|
|
||||||
val _ =
|
val _ =
|
||||||
let
|
let
|
||||||
val _ = run_txns_time "svelte" svelte_arr
|
val svelte = run_txns_time "svelte" svelte_arr
|
||||||
val _ = run_txns_time "rust" rust_arr
|
val rust = run_txns_time "rust" rust_arr
|
||||||
val _ = run_txns_time "seph" seph_arr
|
val seph = run_txns_time "seph" seph_arr
|
||||||
val _ = run_txns_time "automerge" automerge_arr
|
val automerge = run_txns_time "automerge" automerge_arr
|
||||||
|
|
||||||
|
val _ = run_to_string_time "svelte to_string" svelte
|
||||||
|
val _ = run_to_string_time "rust to_string" rust
|
||||||
|
val _ = run_to_string_time "seph to_string" seph
|
||||||
|
val _ = run_to_string_time "automerge to_string" automerge
|
||||||
in
|
in
|
||||||
()
|
()
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user