diff --git a/README.md b/README.md new file mode 100644 index 0000000..088c6e5 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +Comparing speed of bind-dig, ldns-drill and hickory-resolve DNS clients. +Server is Unbound. + +## Summary +`hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t A domain.tld` ran +* 1.97 ± 0.28 times faster than `/usr/sbin/drill -p 2253 -Q A domain.tld @127.0.0.1` +* 5.63 ± 1.16 times faster than `bind9/bin/dig/dig -p 2253 +short A domain.tld @127.0.0.1` + +## Notes +Custom build of drill gives 2x slower speed, +that one in results.txt is from Void packages. diff --git a/results.txt b/results.txt new file mode 100644 index 0000000..222d49f --- /dev/null +++ b/results.txt @@ -0,0 +1,118 @@ +==> Checking deps +/usr/sbin/unbound +/usr/sbin/hyperfine +dig: using custom build at bind9/bin/dig/dig +/usr/sbin/drill +resolve: using custom build at hickory-dns/target/release/resolve + +==> Starting Unbound + +==> Benchmarks for A domain.tld. +Benchmark 1: bind9/bin/dig/dig -p 2253 +short A domain.tld @127.0.0.1 + Time (mean ± σ): 10.7 ms ± 2.2 ms [User: 8.0 ms, System: 3.3 ms] + Range (min … max): 8.6 ms … 16.7 ms 322 runs + +Benchmark 2: /usr/sbin/drill -p 2253 -Q A domain.tld @127.0.0.1 + Time (mean ± σ): 3.8 ms ± 0.5 ms [User: 2.6 ms, System: 0.9 ms] + Range (min … max): 3.0 ms … 4.9 ms 813 runs + +Benchmark 3: hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t A domain.tld + Time (mean ± σ): 1.9 ms ± 0.1 ms [User: 1.2 ms, System: 1.3 ms] + Range (min … max): 1.8 ms … 3.4 ms 1594 runs + + Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. + +Summary + hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t A domain.tld ran + 1.97 ± 0.28 times faster than /usr/sbin/drill -p 2253 -Q A domain.tld @127.0.0.1 + 5.63 ± 1.16 times faster than bind9/bin/dig/dig -p 2253 +short A domain.tld @127.0.0.1 + +==> Benchmarks for AAAA domain.tld. +Benchmark 1: bind9/bin/dig/dig -p 2253 +short AAAA domain.tld @127.0.0.1 + Time (mean ± σ): 9.8 ms ± 1.3 ms [User: 7.5 ms, System: 2.7 ms] + Range (min … max): 8.6 ms … 16.5 ms 227 runs + + Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. + +Benchmark 2: /usr/sbin/drill -p 2253 -Q AAAA domain.tld @127.0.0.1 + Time (mean ± σ): 3.5 ms ± 0.5 ms [User: 2.4 ms, System: 0.9 ms] + Range (min … max): 2.2 ms … 6.0 ms 823 runs + + Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. + +Benchmark 3: hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t AAAA domain.tld + Time (mean ± σ): 1.9 ms ± 0.8 ms [User: 1.3 ms, System: 1.3 ms] + Range (min … max): 1.8 ms … 33.9 ms 1591 runs + + Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. + +Summary + hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t AAAA domain.tld ran + 1.80 ± 0.83 times faster than /usr/sbin/drill -p 2253 -Q AAAA domain.tld @127.0.0.1 + 5.07 ± 2.32 times faster than bind9/bin/dig/dig -p 2253 +short AAAA domain.tld @127.0.0.1 + +==> Benchmarks for MX domain.tld. +Benchmark 1: bind9/bin/dig/dig -p 2253 +short MX domain.tld @127.0.0.1 + Time (mean ± σ): 12.9 ms ± 4.0 ms [User: 9.6 ms, System: 3.9 ms] + Range (min … max): 8.7 ms … 23.1 ms 130 runs + +Benchmark 2: /usr/sbin/drill -p 2253 -Q MX domain.tld @127.0.0.1 + Time (mean ± σ): 3.1 ms ± 0.2 ms [User: 2.2 ms, System: 0.8 ms] + Range (min … max): 2.7 ms … 3.6 ms 1030 runs + +Benchmark 3: hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t MX domain.tld + Time (mean ± σ): 2.0 ms ± 2.0 ms [User: 1.3 ms, System: 1.3 ms] + Range (min … max): 1.8 ms … 81.8 ms 1633 runs + + Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. + +Summary + hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t MX domain.tld ran + 1.57 ± 1.60 times faster than /usr/sbin/drill -p 2253 -Q MX domain.tld @127.0.0.1 + 6.54 ± 6.97 times faster than bind9/bin/dig/dig -p 2253 +short MX domain.tld @127.0.0.1 + +==> Benchmarks for CNAME mail.domain.tld. +Benchmark 1: bind9/bin/dig/dig -p 2253 +short A mail.domain.tld @127.0.0.1 + Time (mean ± σ): 9.8 ms ± 1.4 ms [User: 7.5 ms, System: 2.8 ms] + Range (min … max): 8.7 ms … 15.5 ms 194 runs + + Warning: The first benchmarking run for this command was significantly slower than the rest (15.4 ms). This could be caused by (filesystem) caches that were not filled until after the first run. You are already using the '--warmup' option which helps to fill these caches before the actual benchmark. You can either try to increase the warmup count further or re-run this benchmark on a quiet system in case it was a random outlier. Alternatively, consider using the '--prepare' option to clear the caches before each timing run. + +Benchmark 2: /usr/sbin/drill -p 2253 -Q A mail.domain.tld @127.0.0.1 + Time (mean ± σ): 3.6 ms ± 0.1 ms [User: 2.5 ms, System: 0.9 ms] + Range (min … max): 3.1 ms … 4.0 ms 909 runs + +Benchmark 3: hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t A mail.domain.tld + Time (mean ± σ): 2.0 ms ± 0.9 ms [User: 1.3 ms, System: 1.3 ms] + Range (min … max): 1.9 ms … 30.8 ms 1523 runs + + Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. + +Summary + hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t A mail.domain.tld ran + 1.80 ± 0.83 times faster than /usr/sbin/drill -p 2253 -Q A mail.domain.tld @127.0.0.1 + 4.89 ± 2.36 times faster than bind9/bin/dig/dig -p 2253 +short A mail.domain.tld @127.0.0.1 + +==> Benchmarks for TXT txt.domain.tld. +Benchmark 1: bind9/bin/dig/dig -p 2253 +short TXT txt.domain.tld @127.0.0.1 + Time (mean ± σ): 11.6 ms ± 2.3 ms [User: 8.6 ms, System: 3.5 ms] + Range (min … max): 9.1 ms … 17.6 ms 229 runs + +Benchmark 2: /usr/sbin/drill -p 2253 -Q TXT txt.domain.tld @127.0.0.1 + Time (mean ± σ): 3.5 ms ± 1.5 ms [User: 2.4 ms, System: 0.9 ms] + Range (min … max): 2.2 ms … 11.0 ms 725 runs + +Benchmark 3: hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t TXT txt.domain.tld + Time (mean ± σ): 2.1 ms ± 0.9 ms [User: 1.2 ms, System: 1.4 ms] + Range (min … max): 1.9 ms … 36.7 ms 1461 runs + + Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. + +Summary + hickory-dns/target/release/resolve -n 127.0.0.1:2253 -t TXT txt.domain.tld ran + 1.70 ± 1.09 times faster than /usr/sbin/drill -p 2253 -Q TXT txt.domain.tld @127.0.0.1 + 5.67 ± 2.85 times faster than bind9/bin/dig/dig -p 2253 +short TXT txt.domain.tld @127.0.0.1 + +==> All done + +==> Stopping Unbound