Branch: refs/heads/buffer-perf
Home: https://github.com/yi-editor/yi
Commit: 10d69f86319910f1f55a52293919e6ff9fc3009d
https://github.com/yi-editor/yi/commit/10d69f86319910f1f55a52293919e6ff9fc3009d
Author: Mateusz Kowalczyk <[email protected]>
Date: 2017-04-03 (Mon, 03 Apr 2017)
Changed paths:
M shell.nix
M stack.yaml
A yi-core/bench/Bench.hs
M yi-core/package.yaml
M yi-core/src/Yi/Buffer/HighLevel.hs
M yi-core/src/Yi/Buffer/Implementation.hs
M yi-core/src/Yi/Buffer/Misc.hs
M yi-core/src/Yi/Buffer/Undo.hs
M yi-core/src/Yi/Config/Default.hs
M yi-core/src/Yi/Config/Simple.hs
M yi-core/src/Yi/Core.hs
M yi-core/src/Yi/Editor.hs
M yi-core/src/Yi/KillRing.hs
M yi-core/src/Yi/Types.hs
Log Message:
-----------
Improve BufferM memory usage
We take a small performance hit on operations (due to forcingn Undo) but
performance can be fixed there by not doing silly things. On the other
hand we have 5x+ memory improvement and we aren't leaking everywhere
anymore.
BufferM simple state chain update before/after
----------------------
http://i.imgur.com/F5IvX33.png (WriterT leak)
Basic benchmark, old
----------------------
insert 1million
http://heap.ezyang.com/view/832fbfa170d6741aef9eb56ed60ea5947026b979
yi-core-0.13.5: Benchmark running disabled by --no-run-benchmarks flag.
Completed 2 action(s).
benchmarking split20
time 913.6 ns (913.4 ns .. 913.9 ns)
1.000 R² (1.000 R² .. 1.000 R²)
mean 913.9 ns (913.6 ns .. 914.2 ns)
std dev 1.004 ns (759.4 ps .. 1.431 ns)
benchmarking newTab20
time 923.6 ns (922.9 ns .. 924.2 ns)
1.000 R² (1.000 R² .. 1.000 R²)
mean 922.5 ns (922.0 ns .. 923.1 ns)
std dev 1.860 ns (1.441 ns .. 2.453 ns)
benchmarking insert10
time 36.89 μs (36.88 μs .. 36.91 μs)
1.000 R² (1.000 R² .. 1.000 R²)
mean 36.91 μs (36.90 μs .. 36.94 μs)
std dev 66.81 ns (45.80 ns .. 94.41 ns)
benchmarking insert100
time 546.9 μs (546.1 μs .. 547.7 μs)
1.000 R² (1.000 R² .. 1.000 R²)
mean 547.3 μs (546.4 μs .. 548.4 μs)
std dev 3.246 μs (2.503 μs .. 4.405 μs)
benchmarking insert1000
time 5.429 ms (5.406 ms .. 5.449 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 5.419 ms (5.402 ms .. 5.435 ms)
std dev 50.83 μs (41.14 μs .. 66.15 μs)
benchmarking insert100000
time 536.4 ms (525.0 ms .. 542.0 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 539.6 ms (539.0 ms .. 540.0 ms)
std dev 590.7 μs (0.0 s .. 682.1 μs)
variance introduced by outliers: 19% (moderately inflated)
benchmarking insert1000000
time 5.154 s (4.564 s .. 5.724 s)
0.998 R² (0.994 R² .. 1.000 R²)
mean 5.360 s (5.237 s .. 5.573 s)
std dev 185.3 ms (0.0 s .. 194.2 ms)
variance introduced by outliers: 19% (moderately inflated)
Basic benchmark, new
----------------------
http://heap.ezyang.com/view/a9bab4ab55cbeebfce21026c03ecba14a8ee2ba5
yi-core-0.13.5: Benchmark running disabled by --no-run-benchmarks flag.
benchmarking split20
time 10.84 μs (10.84 μs .. 10.85 μs)
1.000 R² (1.000 R² .. 1.000 R²)
mean 10.84 μs (10.84 μs .. 10.84 μs)
std dev 13.02 ns (9.480 ns .. 19.48 ns)
benchmarking newTab20
time 16.17 μs (16.08 μs .. 16.27 μs)
1.000 R² (1.000 R² .. 1.000 R²)
mean 16.16 μs (16.10 μs .. 16.22 μs)
std dev 195.7 ns (173.8 ns .. 224.7 ns)
benchmarking insert10
time 66.12 μs (66.04 μs .. 66.22 μs)
1.000 R² (1.000 R² .. 1.000 R²)
mean 66.27 μs (66.19 μs .. 66.47 μs)
std dev 424.4 ns (190.1 ns .. 754.8 ns)
benchmarking insert100
time 624.2 μs (622.7 μs .. 625.6 μs)
1.000 R² (1.000 R² .. 1.000 R²)
mean 626.7 μs (625.1 μs .. 629.2 μs)
std dev 6.789 μs (4.319 μs .. 11.23 μs)
benchmarking insert1000
time 6.217 ms (6.199 ms .. 6.231 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 6.199 ms (6.184 ms .. 6.213 ms)
std dev 42.14 μs (32.90 μs .. 59.21 μs)
benchmarking insert100000
time 651.7 ms (648.4 ms .. 654.5 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 654.5 ms (653.9 ms .. 654.9 ms)
std dev 579.3 μs (0.0 s .. 613.7 μs)
variance introduced by outliers: 19% (moderately inflated)
benchmarking insert1000000
time 6.572 s (6.402 s .. 6.713 s)
1.000 R² (1.000 R² .. 1.000 R²)
mean 6.549 s (6.505 s .. 6.573 s)
std dev 38.63 ms (0.0 s .. 40.00 ms)
variance introduced by outliers: 19% (moderately inflated)
--
Yi development mailing list
[email protected]
http://groups.google.com/group/yi-devel
---
You received this message because you are subscribed to the Google Groups
"yi.devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.