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.

Reply via email to