[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#69108: false-positive warning "variable ‘_’ not left unused" in if-l
From: |
Konstantin Kharlamov |
Subject: |
bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let |
Date: |
Sat, 17 Feb 2024 13:09:21 +0300 |
User-agent: |
Evolution 3.50.3 |
On Sat, 2024-02-17 at 11:45 +0000, Ihor Radchenko wrote:
> Konstantin Kharlamov <Hi-Angel@yandex.ru> writes:
>
> > Just a side note, from my experience pcase is very slow¹, so if a
> > function supposed to be called often, I presume it's better to
> > avoid
> > `pcase`. Although, Idk how it compares to `cond`. But judging from
> > the
> > fact `cond` is implemented in C, it is likely faster.
> >
> > 1:
> > https://github.com/ankurdave/color-identifiers-mode/commit/bc566bcdbd79f230b35eafd2b6c4f8428402ec09
>
> I very much doubt the assertion of that commit.
> AFAIK, pcase expands to a similar consp check. If may be slow only
> when
> you macro-expand it during run time, not byte-compiling the code
> during
> benchmark. I recommend `benchmark-run-compiled' for testing. Or even
> to
> use native-compilation.
Sure, I just re-tested with `benchmark-run-compiled` and the result is similar.
Here's what I do:
1. In color-identifers repo `git checkout
bc566bcdbd79f230b35eafd2b6c4f8428402ec09`
2. Open a `emacs ./color-identifiers-mode.el`
3. Now, I don't know for sure if `benchmark-run-compiled` compiles child
functions or
not. But just to be on the safe side I merged the two functions, so:
1. Inside function `color-identifiers:elisp-get-declarations` remove the call
`(color-identifiers:elisp-declarations-in-sexp sexp result)`
2. Copy the body of `color-identifiers:elisp-declarations-in-sexp` starting
with
the first `(let)` call and paste it in place where we removed the call.
4. Evaluate `color-identifiers:elisp-get-declarations`
5. Open Emacs's `simple.el`
6. Evaluate `(benchmark-run-compiled 1
(color-identifiers:elisp-get-declarations))`
Results for 3 times are (this is another laptop, so numbers are a bit
different):
(2.0673167670000003 54 1.316455474999998)
(2.0684198769999997 54 1.3043319699999998)
(2.079789413 54 1.3183175779999985)
7. Undo code changes and call `git checkout HEAD^` to test code prior to the
commit
8. Repeat 3 and 4
9. Evaluate `(benchmark-run-compiled 1
(color-identifiers:elisp-get-declarations))`.
Results for 3 times are:
(5.194122174 135 3.313309744999998)
(5.130884611 135 3.2485326989999948)
(5.155663089 134 3.2561076369999995)
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Konstantin Kharlamov, 2024/02/13
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Michael Heerdegen, 2024/02/13
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Michael Heerdegen, 2024/02/16
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Eli Zaretskii, 2024/02/17
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Konstantin Kharlamov, 2024/02/17
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Ihor Radchenko, 2024/02/17
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let,
Konstantin Kharlamov <=
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Ihor Radchenko, 2024/02/19
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Konstantin Kharlamov, 2024/02/19
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Michael Heerdegen, 2024/02/17
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Michael Heerdegen, 2024/02/17
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Eli Zaretskii, 2024/02/18
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Michael Heerdegen, 2024/02/24
- bug#69108: false-positive warning "variable ‘_’ not left unused" in if-let* and if-let, Eli Zaretskii, 2024/02/25