From 128adae14dd040a42cafd01f6eeb887671066761 Mon Sep 17 00:00:00 2001 From: Avril Date: Fri, 27 Nov 2020 16:53:23 +0000 Subject: [PATCH] update README --- README.md | 8 ++++---- profiling/release-flame-old.png | Bin 0 -> 32742 bytes profiling/release-flame.png | Bin 0 -> 10582 bytes 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 profiling/release-flame-old.png create mode 100644 profiling/release-flame.png diff --git a/README.md b/README.md index 07a1855..2294039 100644 --- a/README.md +++ b/README.md @@ -27,19 +27,19 @@ Run with `-h` for more options. * Doesn't dump huge amounts of trash onto each stack frame ## Performance -[https://github.com/sharkdp/hyperfine](hyperfine) reports a **700-800%** speedup over `v1`. +[hyperfine](https://github.com/sharkdp/hyperfine) reports a **700-800%** speedup over `v1`. It's easy to see why. ### V1 flamegraph V1 uses a pesudo-array adaptor to perform filesystem reads, seeks, and writes. This causes a massive syscall overhead. -![](./profiling/release-flame-old.svg) +![](./profiling/release-flame-old.png) ### V2 flamegraph Whereas V2 uses a single `mmap()`. -![](./profiling/release-flame.svg) +![](./profiling/release-flame.png) ## Memory usage -The [https://www.systutorials.com/docs/linux/man/1-memusage/](memusage) graph for =v1= shows extremely inefficient stack usage. +The [memusage](https://www.systutorials.com/docs/linux/man/1-memusage/) graph for =v1= shows extremely inefficient stack usage. ![](./profiling/old-mem.png) ( the green is supposed to be a line, not a bar ) This is due to how the unshuffler buffers RNG results. diff --git a/profiling/release-flame-old.png b/profiling/release-flame-old.png new file mode 100644 index 0000000000000000000000000000000000000000..db3789fec87ce4de8fc33f57c60c133d5f5faa6a GIT binary patch literal 32742 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 P3sB^xm842u8-Myg$QBu{ literal 0 HcmV?d00001 diff --git a/profiling/release-flame.png b/profiling/release-flame.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1057535a0b0d0f0494aacb64251db97b8600bc GIT binary patch literal 10582 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 Cl3dUL literal 0 HcmV?d00001