@@ -618,165 +618,165 @@ TEST_F(IntrusiveStringSetTest, IterateEmpty) {
618618// return obj.ObjMallocUsed() + obj.SetMallocUsed();
619619// }
620620
621- // void BM_Clone(benchmark::State& state) {
622- // vector<string> strs;
623- // mt19937 generator(0);
624- // IntrusiveStringSet ss1, ss2;
625- // unsigned elems = state.range(0);
626- // for (size_t i = 0; i < elems; ++i) {
627- // string str = random_string(generator, 10);
628- // ss1.Add(str);
629- // }
630- // ss2.Reserve(ss1.UpperBoundSize());
631- // while (state.KeepRunning()) {
632- // for (auto src : ss1) {
633- // ss2.Add(src.Key());
634- // }
635- // state.PauseTiming();
636- // ss2.Clear();
637- // ss2.Reserve(ss1.UpperBoundSize());
638- // state.ResumeTiming();
639- // }
640- // }
641- // BENCHMARK(BM_Clone)->ArgName("elements")->Arg(32000);
642-
643- // void BM_Fill(benchmark::State& state) {
644- // unsigned elems = state.range(0);
645- // vector<string> strs;
646- // mt19937 generator(0);
647- // IntrusiveStringSet ss1, ss2;
648- // for (size_t i = 0; i < elems; ++i) {
649- // string str = random_string(generator, 10);
650- // ss1.Add(str);
651- // }
621+ void BM_Clone (benchmark::State& state) {
622+ vector<string> strs;
623+ mt19937 generator (0 );
624+ IntrusiveStringSet ss1, ss2;
625+ unsigned elems = state.range (0 );
626+ for (size_t i = 0 ; i < elems; ++i) {
627+ string str = random_string (generator, 10 );
628+ ss1.Add (str);
629+ }
630+ ss2.Reserve (ss1.UpperBoundSize ());
631+ while (state.KeepRunning ()) {
632+ for (auto & src : ss1) {
633+ ss2.Add (src.Key ());
634+ }
635+ state.PauseTiming ();
636+ ss2.Clear ();
637+ ss2.Reserve (ss1.UpperBoundSize ());
638+ state.ResumeTiming ();
639+ }
640+ }
641+ BENCHMARK (BM_Clone)->ArgName (" elements" )->Arg(32000 );
652642
653- // while (state.KeepRunning()) {
654- // ss1.Fill(&ss2);
655- // state.PauseTiming();
656- // ss2.Clear();
657- // state.ResumeTiming();
658- // }
659- // }
660- // BENCHMARK(BM_Fill)->ArgName("elements")->Arg(32000);
661-
662- // void BM_Clear(benchmark::State& state) {
663- // unsigned elems = state.range(0);
664- // mt19937 generator(0);
665- // IntrusiveStringSet ss;
666- // while (state.KeepRunning()) {
667- // state.PauseTiming();
668- // for (size_t i = 0; i < elems; ++i) {
669- // string str = random_string(generator, 16);
670- // ss.Add(str);
671- // }
672- // state.ResumeTiming();
673- // ss.Clear();
674- // }
675- // }
676- // BENCHMARK(BM_Clear)->ArgName("elements")->Arg(32000);
677-
678- // void BM_Add(benchmark::State& state) {
679- // vector<string> strs;
680- // mt19937 generator(0);
681- // IntrusiveStringSet ss;
682- // unsigned elems = state.range(0);
683- // unsigned keySize = state.range(1);
684- // for (size_t i = 0; i < elems; ++i) {
685- // string str = random_string(generator, keySize);
686- // strs.push_back(str);
687- // }
688- // ss.Reserve(elems);
689- // while (state.KeepRunning()) {
690- // for (auto& str : strs)
691- // ss.Add(str);
692- // state.PauseTiming();
693- // state.counters["Memory_Used"] = memUsed(ss);
694- // ss.Clear();
695- // ss.Reserve(elems);
696- // state.ResumeTiming();
697- // }
698- // }
699- // BENCHMARK(BM_Add)
700- // ->ArgNames({"elements", "Key Size"})
701- // ->ArgsProduct({{1000, 10000, 100000}, {10, 100, 1000}});
702-
703- // void BM_AddMany(benchmark::State& state) {
704- // vector<string> strs;
705- // mt19937 generator(0);
706- // IntrusiveStringSet ss;
707- // unsigned elems = state.range(0);
708- // unsigned keySize = state.range(1);
709- // for (size_t i = 0; i < elems; ++i) {
710- // string str = random_string(generator, keySize);
711- // strs.push_back(str);
712- // }
713- // ss.Reserve(elems);
714- // vector<string_view> svs;
715- // for (const auto& str : strs) {
716- // svs.push_back(str);
717- // }
718- // while (state.KeepRunning()) {
719- // ss.AddMany(absl::MakeSpan(svs), UINT32_MAX, false);
720- // state.PauseTiming();
721- // CHECK_EQ(ss.UpperBoundSize(), elems);
722- // state.counters["Memory_Used"] = memUsed(ss);
723- // ss.Clear();
724- // ss.Reserve(elems);
725- // state.ResumeTiming();
726- // }
727- // }
728- // BENCHMARK(BM_AddMany)
729- // ->ArgNames({"elements", "Key Size"})
730- // ->ArgsProduct({{1000, 10000, 100000}, {10, 100, 1000}});
731-
732- // void BM_Erase(benchmark::State& state) {
733- // std::vector<std::string> strs;
734- // mt19937 generator(0);
735- // IntrusiveStringSet ss;
736- // auto elems = state.range(0);
737- // auto keySize = state.range(1);
738- // for (long int i = 0; i < elems; ++i) {
739- // std::string str = random_string(generator, keySize);
740- // strs.push_back(str);
741- // ss.Add(str);
742- // }
743- // state.counters["Memory_Before_Erase"] = memUsed(ss);
744- // while (state.KeepRunning()) {
745- // for (auto& str : strs) {
746- // ss.Erase(str);
747- // }
748- // state.PauseTiming();
749- // state.counters["Memory_After_Erase"] = memUsed(ss);
750- // for (auto& str : strs) {
751- // ss.Add(str);
752- // }
753- // state.ResumeTiming();
754- // }
755- // }
756- // BENCHMARK(BM_Erase)
757- // ->ArgNames({"elements", "Key Size"})
758- // ->ArgsProduct({{1000, 10000, 100000}, {10, 100, 1000}});
759-
760- // void BM_Get(benchmark::State& state) {
761- // std::vector<std::string> strs;
762- // mt19937 generator(0);
763- // IntrusiveStringSet ss;
764- // auto elems = state.range(0);
765- // auto keySize = state.range(1);
766- // for (long int i = 0; i < elems; ++i) {
767- // std::string str = random_string(generator, keySize);
768- // strs.push_back(str);
769- // ss.Add(str);
770- // }
771- // while (state.KeepRunning()) {
772- // for (auto& str : strs) {
773- // ss.Find(str);
774- // }
775- // }
776- // }
777- // BENCHMARK(BM_Get)
778- // ->ArgNames({"elements", "Key Size"})
779- // ->ArgsProduct({{1000, 10000, 100000}, {10, 100, 1000}});
643+ void BM_Fill (benchmark::State& state) {
644+ unsigned elems = state.range (0 );
645+ vector<string> strs;
646+ mt19937 generator (0 );
647+ IntrusiveStringSet ss1, ss2;
648+ for (size_t i = 0 ; i < elems; ++i) {
649+ string str = random_string (generator, 10 );
650+ ss1.Add (str);
651+ }
652+
653+ while (state.KeepRunning ()) {
654+ ss1.Fill (&ss2);
655+ state.PauseTiming ();
656+ ss2.Clear ();
657+ state.ResumeTiming ();
658+ }
659+ }
660+ BENCHMARK (BM_Fill)->ArgName (" elements" )->Arg(32000 );
661+
662+ void BM_Clear (benchmark::State& state) {
663+ unsigned elems = state.range (0 );
664+ mt19937 generator (0 );
665+ IntrusiveStringSet ss;
666+ while (state.KeepRunning ()) {
667+ state.PauseTiming ();
668+ for (size_t i = 0 ; i < elems; ++i) {
669+ string str = random_string (generator, 16 );
670+ ss.Add (str);
671+ }
672+ state.ResumeTiming ();
673+ ss.Clear ();
674+ }
675+ }
676+ BENCHMARK (BM_Clear)->ArgName (" elements" )->Arg(32000 );
677+
678+ void BM_Add (benchmark::State& state) {
679+ vector<string> strs;
680+ mt19937 generator (0 );
681+ IntrusiveStringSet ss;
682+ unsigned elems = state.range (0 );
683+ unsigned keySize = state.range (1 );
684+ for (size_t i = 0 ; i < elems; ++i) {
685+ string str = random_string (generator, keySize);
686+ strs.push_back (str);
687+ }
688+ ss.Reserve (elems);
689+ while (state.KeepRunning ()) {
690+ for (auto & str : strs)
691+ ss.Add (str);
692+ state.PauseTiming ();
693+ // state.counters["Memory_Used"] = memUsed(ss);
694+ ss.Clear ();
695+ ss.Reserve (elems);
696+ state.ResumeTiming ();
697+ }
698+ }
699+ BENCHMARK (BM_Add)
700+ ->ArgNames ({" elements" , " Key Size" })
701+ ->ArgsProduct({{1000 , 10000 , 100000 }, {10 , 100 , 1000 }});
702+
703+ void BM_AddMany (benchmark::State& state) {
704+ vector<string> strs;
705+ mt19937 generator (0 );
706+ IntrusiveStringSet ss;
707+ unsigned elems = state.range (0 );
708+ unsigned keySize = state.range (1 );
709+ for (size_t i = 0 ; i < elems; ++i) {
710+ string str = random_string (generator, keySize);
711+ strs.push_back (str);
712+ }
713+ ss.Reserve (elems);
714+ vector<string_view> svs;
715+ for (const auto & str : strs) {
716+ svs.push_back (str);
717+ }
718+ while (state.KeepRunning ()) {
719+ ss.AddMany (absl::MakeSpan (svs));
720+ state.PauseTiming ();
721+ CHECK_EQ (ss.UpperBoundSize (), elems);
722+ // state.counters["Memory_Used"] = memUsed(ss);
723+ ss.Clear ();
724+ ss.Reserve (elems);
725+ state.ResumeTiming ();
726+ }
727+ }
728+ BENCHMARK (BM_AddMany)
729+ ->ArgNames ({" elements" , " Key Size" })
730+ ->ArgsProduct({{1000 , 10000 , 100000 }, {10 , 100 , 1000 }});
731+
732+ void BM_Erase (benchmark::State& state) {
733+ std::vector<std::string> strs;
734+ mt19937 generator (0 );
735+ IntrusiveStringSet ss;
736+ auto elems = state.range (0 );
737+ auto keySize = state.range (1 );
738+ for (long int i = 0 ; i < elems; ++i) {
739+ std::string str = random_string (generator, keySize);
740+ strs.push_back (str);
741+ ss.Add (str);
742+ }
743+ // state.counters["Memory_Before_Erase"] = memUsed(ss);
744+ while (state.KeepRunning ()) {
745+ for (auto & str : strs) {
746+ ss.Erase (str);
747+ }
748+ state.PauseTiming ();
749+ // state.counters["Memory_After_Erase"] = memUsed(ss);
750+ for (auto & str : strs) {
751+ ss.Add (str);
752+ }
753+ state.ResumeTiming ();
754+ }
755+ }
756+ BENCHMARK (BM_Erase)
757+ ->ArgNames ({" elements" , " Key Size" })
758+ ->ArgsProduct({{1000 , 10000 , 100000 }, {10 , 100 , 1000 }});
759+
760+ void BM_Get (benchmark::State& state) {
761+ std::vector<std::string> strs;
762+ mt19937 generator (0 );
763+ IntrusiveStringSet ss;
764+ auto elems = state.range (0 );
765+ auto keySize = state.range (1 );
766+ for (long int i = 0 ; i < elems; ++i) {
767+ std::string str = random_string (generator, keySize);
768+ strs.push_back (str);
769+ ss.Add (str);
770+ }
771+ while (state.KeepRunning ()) {
772+ for (auto & str : strs) {
773+ ss.Find (str);
774+ }
775+ }
776+ }
777+ BENCHMARK (BM_Get)
778+ ->ArgNames ({" elements" , " Key Size" })
779+ ->ArgsProduct({{1000 , 10000 , 100000 }, {10 , 100 , 1000 }});
780780
781781void BM_Grow (benchmark::State& state) {
782782 vector<string> strs;
0 commit comments