Commit graph

11 commits

Author SHA1 Message Date
a4e674fddf perf: add lua iteration to decrease loops in lua 2023-10-22 21:06:43 +01:00
c562190829 refactor: remove lazy_static
once_cell has now been merged into rust core. This removes the
lazy_static dependency and migrates over to the built in `OnceLock`.

Its always good to remove dependencies where possible, this also give us
a preference for the built in `OnceLock`

```
Benchmark 1: chore: add benchmark for `set_items`
  Time (mean ± σ):      6.327 s ±  0.199 s    [User: 15.316 s, System: 1.323 s]
  Range (min … max):    6.087 s …  6.712 s    10 runs

Benchmark 2: refactor: remove lazy_static
  Time (mean ± σ):      6.171 s ±  0.251 s    [User: 15.223 s, System: 1.382 s]
  Range (min … max):    5.910 s …  6.776 s    10 runs

Summary
  'refactor: remove lazy_static' ran
    1.03 ± 0.05 times faster than 'chore: add benchmark for `set_items`'
```
2023-10-22 17:23:28 +01:00
3b0d1510e7 fix: include dot files in search results
This adds dot files into the finder. We are adding the overrides to the
`ignore` package, that can be used later to add custom ignore
directories that can be passed in as settings.

We are also adding a new `ivy_cwd` function to libivy to get the current
directory due to the limitations of lua.

Fixes-issue: #16
2022-09-04 13:33:50 +01:00
Xymist
b509a5842f Remove ThreadPool
Having switched to iterators and Rayon this is no longer used.
2022-08-26 16:46:51 +01:00
Xymist
cec8393770 Remove multithreading for sorting
The relevant processes are so fast, mutexes and mutex locks are so
expensive, and iterators so efficient, that it's actually faster to run
single-threaded across all the data than to spin up a bunch of threads
and have them basically spinlock waiting for the global mutex involved
either directly or in a channel.

ivy_files(kubernetes)   time:   [10.209 ms 10.245 ms 10.286 ms]
                        change: [-36.781% -36.178% -35.601%] (p = 0.00 < 0.05)
                        Performance has improved.

ivy_match(file.lua)     time:   [1.1626 µs 1.1668 µs 1.1709 µs]
                        change: [+0.2131% +1.5409% +2.9109%] (p = 0.02 < 0.05)
                        Change within noise threshold.
2022-08-26 16:29:11 +01:00
Xymist
7fb8be541a Reduce lock contention (round 1)
- Use an async (i.e. unlimited buffer) MPSC channel instead of an
  Arc<Mutex<Vec>> for storing the scored matches in Sorter
- Use Arc<Matcher> instead of Arc<Mutex<Matcher>> for the matcher, as
  it's not mutated and appears to be threadsafe.

This cuts average iteration time (on the benchmarked machine) from
25.98ms to 16.08ms for the ivy_files benchmark.
2022-08-26 16:01:22 +01:00
Xymist
8ab074b537 Add benchmarks and an example bin for profiling 2022-08-26 14:20:17 +01:00
Xymist
12a1a64c54 Format and clippy 2022-08-26 10:25:05 +01:00
f4a65a574c perf: add instance prop of SkimMatcherV2
This is so we are not crating an new instance of this each time we are
scoring a match.
2022-08-25 20:19:09 +01:00
9fdb633f3e chore: cache directory when ivy_init is called
This is now implemented in rust
2022-08-25 20:19:09 +01:00
e7b7dc1e4c feat: experimental first rust implementation of libivy 2022-08-25 20:19:01 +01:00