Branch: refs/heads/buffer-perf Home: https://github.com/yi-editor/yi Commit: 48eb153e5a8377a8e32d6b2543b5a754c47b8d1e https://github.com/yi-editor/yi/commit/48eb153e5a8377a8e32d6b2543b5a754c47b8d1e Author: Mateusz Kowalczyk <fuuze...@fuuzetsu.co.uk> Date: 2017-04-02 (Sun, 02 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 yi-devel@googlegroups.com 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 yi-devel+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.