add performance section to readme
This commit is contained in:
10
README.md
10
README.md
@@ -17,3 +17,13 @@ The two files are `rope.sml` and `tiny_rope.sml`.
|
|||||||
Except for the line-based operations `appendLine` and `foldLines`, all functions are the same between the two (aside from `verifyLines` which is just for testing purposes).
|
Except for the line-based operations `appendLine` and `foldLines`, all functions are the same between the two (aside from `verifyLines` which is just for testing purposes).
|
||||||
|
|
||||||
Examples of usage can be found in [`examples.sml`](https://github.com/hummy123/brolib-sml/blob/main/examples.sml).
|
Examples of usage can be found in [`examples.sml`](https://github.com/hummy123/brolib-sml/blob/main/examples.sml).
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
These two ropes are both quite fast. I compared the OCaml port with the other text data structures in OCaml, and it beat those handily when processing the datasets from [here](https://github.com/josephg/editing-traces) which just test insertion and deletion. It was also faster at performing substrings than the others.
|
||||||
|
|
||||||
|
I don't know other Standard ML libraries to compare it to, but with MLton, this rope implementation beats [the fastest ropes in Rust](https://github.com/josephg/jumprope-rs#benchmarks) at insertion and deletion quite easily, never going 1 ms in the slowest dataset.
|
||||||
|
|
||||||
|
I don't know how to explain this result, but I assume most of the credit goes to the MLton compiler. It also seems likely that this is slower or string queries, as those Rust implementations use cache-friendly B-Trees as opposed to the binary tree used here.
|
||||||
|
|
||||||
|
(Note to self: worth giving numbers.)
|
||||||
|
|||||||
1
mlton
1
mlton
Submodule mlton deleted from fd6d870578
Reference in New Issue
Block a user