From d4b9c6d3c7de1a3d1936e716075a2d592b857d59 Mon Sep 17 00:00:00 2001 From: bloeys Date: Sat, 11 Jun 2022 08:13:34 +0400 Subject: [PATCH] Intersection benchmarks --- .res/bench-union-10-million.png | Bin 0 -> 36105 bytes README.md | 19 ++++- nset_test.go | 124 ++++++++++++++++++++++++++++++-- 3 files changed, 138 insertions(+), 5 deletions(-) create mode 100755 .res/bench-union-10-million.png diff --git a/.res/bench-union-10-million.png b/.res/bench-union-10-million.png new file mode 100755 index 0000000000000000000000000000000000000000..802cce8cfa8bc83a69d951bfcf20e30098548686 GIT binary patch literal 36105 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