-
-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
README claims #1
Comments
It outputs the median time and CPU usage. In the summary section, it shows the percentage faster. With interactive output, it shows the current run number and progress percentage. With Unicode output, it uses Unicode smart quotes among other symbols like x̅ for mean and x̃ for median. It also spells out "std dev" for people who may not know the σ symbol. The warnings say how many runs specifically had the problem, so for example instead of "Ignoring non-zero exit code" it will say "Ignoring 5 non-zero exit codes". Without the I should note that it does not include the
Yes, the Bash This port does not need to spawn new shells since Bash is obviously already a shell and can run the commands directly.
See above.
Slightly faster than hyperfine. I used hyperfine to benchmark itself and my port. My port is as much as 12% faster from my testing, although typically less than that. I assume this is because it does not need to spawn a new shell for each run. Thank you again for making hyperfine! Feel free to backport any of my improvements. If you do not already know, you may be interested that hyperfine is actively being used to benchmark GNU factor and the new uutils Rust implementation (see here and here). That is what the screenshot on my README is showing. |
Thank you for the detailed response!
Displaying median between min and max seems like a great idea!
what does that mean?
👍
Well, I believe that printing numbers with greater precision is not necessarily a good thing. If the benchmark result is 205.9 ms ± 1.7 ms, there's really no need to show any more digits.
👍 see sharkdp/hyperfine#336
Okay.. 12% faster for commands that run extremely fast, I would guess? When the runtime is actually limited by spawning shells 😄
Nice, thank you for the references! |
Ok, and maybe just to be fair:
Using hyperfine does not require any of these things either. Packages for hyperfine are available for a wide range of distributions: https://github.com/sharkdp/hyperfine#installation. Even if users are on non-supported OS, we provide pre-compiled binaries for many different architectures (https://github.com/sharkdp/hyperfine/releases). There are statically compiled versions of
It somehow indicates that
I guess this would be easy to add here, but I really think that Parameter scans are somewhat supported by using bash features, but part of the strength of hyperfines |
No problem!
It is just a different representation of how much faster the fastest command is that may be easier for users to comprehend, particularity when all the commands are about the same speed.
Sure, when the times are less than one second and the numbers in milliseconds by default, but that same line in seconds would be
Sure, but none of the major distributions that most people use: Ubuntu, Debian, openSUSE, etc.
Yes, but I doubt most people want use an unsigned binary from an untrusted source. I think most users are probably installing hyperfine with BTW, I noticed that you just added ARM binaries. I am not sure if you know that Travis CI provides ARM jobs, so you should not have to cross-compile it like you did. They also provide Windows jobs, if you wanted to automate that.
My port is only targeting Linux, where I am open to suggestions for changing the wording to be fairer.
See above. Currently with hyperfine you would have to use one of the export options to get better precision.
Yes, this is on my list of features to add.
I believe everything that is supported by hyperfine (
Interesting, I was not aware of this. |
ok, fair point.
We do provide openSUSE is arguably declining in popularity, but that's just my personal view (which seems to align with https://distrowatch.com/ page views, if they count as a metric).
We have around 17k downloads from https://crates.io/crates/hyperfine and around 38k downloads the GitHub release page from https://somsubhra.com/github-release-stats/?username=sharkdp&repository=hyperfine - so it seems like the majority of users does not have a problem with downloading an "unsigned" binary (they are downloading it from the official project page, so...).
Thanks, I did not know that they provide ARM builds. I do Windows builds on some other projects, but so far, Appveyor was good enough. We could also switch to GitHub Actions, like we did for my |
That was not an exhaustive list, just a few examples. You could also include: CentOS, Mint, Raspbian, etc.
OK, good point. I guess I was only thinking about Linux users. Although I still think you should sign your binaries with PGP for security. One of the advantages of my port is that it is only about 600 LOC, so users can easily audit it to verify that it is not doing anything malicious. While users can audit your repository (as I have done) and its 15 dependencies, they have no way of knowing if your binaries are actually of the code in it (or even if they were created by you), without installing Rust, downloading the dependencies and compiling it themselves. As I said before, I am open to suggestions for changing the wording to be fairer. How about: "Does NOT require running an unsigned binary or installing Rust, downloading dependencies and compiling anything". |
No worries. I don't have any hard feelings about the wording 😄. |
Hi!
Author of
hyperfine
here. Glad to see that you liked our tool and decided to port it tobash
. I have a few questions regarding the statements in the README. Not because I want to claim they are wrong, but because I'm genuinely curious:What would be some of these improvements? Maybe we could profit from these in
hyperfine
as well?hyperfine
reports all times in millisecond resolution because I don't know how to make a measurement that would be more precise. There is no sense in showing more digits if the actual measurement is not that precise. The problem is that we are spawning an intermediate shell that takes roughly 5 milliseconds on its own. We subtract that time again, but we can not expect to measure microsecond-resolution execution times on top of a 4.8 ms ± 3.7 ms shell spawning time. This is whyhyperfine
also shows a warning if commands take less than 5 ms to complete.To get more precise timings, we would need to get rid of the intermediate shell. This is possible in principle, but would keep us from (easily) running benchmarks like
seq 100000 | factor
.What kind of information would that be? CPU usage?
Nice!
Slightly faster than what?
The text was updated successfully, but these errors were encountered: