# Build-time comparisons with `syn`
The benchmark tool used is [`hyperfine`](https://github.com/sharkdp/hyperfine) with the following arguments:
- Warmup: `-w 1`
- Prepare full builds: `-p 'cargo clean'`
- Prepare incremental builds: `-p 'touch src/lib.rs'`
- Command debug builds: `'cargo build'`
- Command release builds: `'cargo build --release'`
Crate versions:
- `myn` @ [c86196dc061a2bea10363c9ed3fb7091a70e3984](https://github.com/parasyte/myn/tree/c86196dc061a2bea10363c9ed3fb7091a70e3984)
- `syn` @ [2dc79880cd982ec217c0e0dbcf751a6e78186b43](https://github.com/dtolnay/syn/tree/2dc79880cd982ec217c0e0dbcf751a6e78186b43)
## High-end desktop
Benchmark environment:
- Windows 11 Home Version 22H2
- AMD Ryzen 9 5900X @ 3.70 GHz (32GB DDR4)
- Rust version: `rustc 1.70.0-nightly (17c116721 2023-03-29)`
- Linker: `rust-lld`
### Time (mean ± σ):
| `myn` | **331.1 ms ± 5.1 ms** | **334.9 ms ± 9.9 ms** | **232.8 ms ± 10.8 ms** | **301.8 ms ± 8.5 ms** |
| `syn` | 2.933 s ± 0.013 s | 3.063 s ± 0.018 s | 786.5 ms ± 10.3 ms | 2.388 s ± 0.022 s |
### Range (min … max):
| `myn` | **323.8 ms … 340.2 ms** | **323.3 ms … 348.9 ms** | **220.4 ms … 253.4 ms** | **287.2 ms … 315.9 ms** |
| `syn` | 2.912 s … 2.952 s | 3.042 s … 3.093 s | 774.7 ms … 805.4 ms | 2.360 s … 2.413 s |
## Mid-range laptop
Benchmark environment:
- macOS 13.2.1
- Intel Core i7-7920HQ CPU @ 3.10GHz (16GB LPDDR3)
- Rust version: `rustc 1.70.0-nightly (0599b6b93 2023-04-01)`
- Linker: `zld`
### Time (mean ± σ):
| `myn` | **1.008 s ± 0.028 s** | **1.049 s ± 0.040 s** | **339.1 ms ± 21.0 ms** | **618.1 ms ± 20.6 ms** |
| `syn` | 5.980 s ± 0.116 s | 9.824 s ± 0.094 s | 1.285 s ± 0.029 s | 7.083 s ± 0.192 s |
### Range (min … max):
| `myn` | **0.967 s … 1.052 s** | **0.990 s … 1.117 s** | **320.9 ms … 389.1 ms** | **589.0 ms … 668.8 ms** |
| `syn` | 5.805 s … 6.119 s | 9.593 s … 9.923 s | 1.239 s … 1.333 s | 6.809 s … 7.389 s |
# Build time comparisons with `#[derive]` macro implementation
The benchmark tool used is [`hyperfine`](https://github.com/sharkdp/hyperfine) with the following arguments:
- Warmup: `-w 1`
- Prepare full builds: `-p 'cargo clean'`
- Prepare incremental builds: `-p 'touch onlyargs_derive/src/lib.rs'`
- Command debug builds: `'cargo build --package derive-example'`
- Command release builds: `'cargo build --package derive-example --release'`
This compares build times between an application using a `#[derive]` macro built on `myn` and `syn`-family crates. The incremental builds in this setup do not rebuild the dependencies (`myn`, `syn`, etc.) at all.
Crate version:
- `onlyargs_derive` @ [3f446544f7ffa4987fae725ddf367f24acb29be5](https://github.com/parasyte/onlyargs/tree/3f446544f7ffa4987fae725ddf367f24acb29be5)
- `myn` @ [c86196dc061a2bea10363c9ed3fb7091a70e3984](https://github.com/parasyte/myn/tree/c86196dc061a2bea10363c9ed3fb7091a70e3984)
- `onlyargs_derive` @ [6abe5cd5474239846b3bc81d87bca6779e342d1e](https://github.com/parasyte/onlyargs/tree/6abe5cd5474239846b3bc81d87bca6779e342d1e)
- `syn` @ [2.0.12](https://github.com/dtolnay/syn/tree/2.0.12)
- `quote` @ [1.0.26](https://github.com/dtolnay/quote/tree/1.0.26)
- `proc-macro2` @ [1.0.54](https://github.com/dtolnay/proc-macro2/tree/1.0.54)
## High-end desktop
Benchmark environment:
- Windows 11 Home Version 22H2
- AMD Ryzen 9 5900X @ 3.70 GHz (32GB DDR4)
- Rust version: `rustc 1.70.0-nightly (17c116721 2023-03-29)`
- Linker: `rust-lld`
### Time (mean ± σ):
| `myn` | **859.7 ms ± 36.1 ms** | **785.1 ms ± 8.3 ms** | **524.7 ms ± 6.1 ms** | **614.9 ms ± 5.3 ms** |
| `syn` | 2.866 s ± 0.009 s | 2.907 s ± 0.012 s | 611.3 ms ± 11.1 ms | 722.4 ms ± 5.8 ms |
### Range (min … max):
| `myn` | **824.6 ms … 913.3 ms** | **774.2 ms … 803.0 ms** | **519.2 ms … 538.7 ms** | **608.2 ms … 624.3 ms** |
| `syn` | 2.850 s … 2.882 s | 2.892 s … 2.930 s | 602.0 ms … 640.9 ms | 713.7 ms … 733.5 ms |
## Mid-range laptop
Benchmark environment:
- macOS 13.2.1
- Intel Core i7-7920HQ CPU @ 3.10GHz (16GB LPDDR3)
- Rust version: `rustc 1.70.0-nightly (0599b6b93 2023-04-01)`
- Linker: `zld`
### Time (mean ± σ):
| `myn` | **2.008 s ± 0.032 s** | **1.982 s ± 0.069 s** | **969.0 ms ± 41.5 ms** | **1.258 s ± 0.012 s** |
| `syn` | 6.931 s ± 0.150 s | 6.935 s ± 0.088 s | 1.080 s ± 0.030 s | 1.486 s ± 0.027 s |
### Range (min … max):
| `myn` | **1.945 s … 2.059 s** | **1.884 s … 2.113 s** | **932.5 ms … 1076.6 ms** | **1.243 s … 1.277 s** |
| `syn` | 6.594 s … 7.138 s | 6.840 s … 7.148 s | 1.033 s … 1.117 s | 1.447 s … 1.529 s |