Skip to content

Noticeable slowdowns running tms after upgrading to v0.5.0 #173

@fautore

Description

@fautore

Upgraded to v0.5.0, noticed that running tms now is very slower compared to v0.4.5.

I ran some tests with hyperfine (compiled the binaries with cargo build --release) spamming the esc key. I'm very aware that this is a very non-conclusive test, but the difference in the time took warrants some additional investigation nonetheless, here are the results:

> hyperfine ./v0.4.5
Benchmark 1: ./v0.4.5
  Time (mean ± σ):     204.3 ms ±  16.8 ms    [User: 41.1 ms, System: 163.7 ms]
  Range (min … max):   184.4 ms … 263.1 ms    16 runs

> hyperfine ./v0.5.0
Benchmark 1: ./v0.5.0
  Time (mean ± σ):     713.0 ms ±  17.3 ms    [User: 551.5 ms, System: 166.5 ms]
  Range (min … max):   672.5 ms … 730.7 ms    10 runs

> hyperfine ./v0.4.5 ./v0.5.0
Benchmark 1: ./v0.4.5
  Time (mean ± σ):     202.2 ms ±   8.0 ms    [User: 39.8 ms, System: 166.2 ms]
  Range (min … max):   182.3 ms … 214.5 ms    16 runs

Benchmark 2: ./v0.5.0
  Time (mean ± σ):     720.6 ms ±   9.5 ms    [User: 559.8 ms, System: 165.3 ms]
  Range (min … max):   703.9 ms … 732.3 ms    10 runs

Summary
  ./v0.4.5 ran
    3.56 ± 0.15 times faster than ./v0.5.0

Actual tests

Did some more digging, wrote a test that measures execution time for find_repos and ran with cargo (thereby eliminating user esc behaviour).
All the configurations are the same as the first set of tests.

v0.5.0:

> cargo test -- --nocapture
   ...(omit output for brevity)
Function execution time: 2.733594328s
test repos::test::perf_find_repos ... ok
   ...(omit output for brevity)

v0.4.5

> cargo test -- --nocapture
   ...(omit output for brevity)
Function execution time: 534.414374ms
test repos::test::perf_find_repos ... ok
   ...(omit output for brevity)

Let me know if further investigation is needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions