// File: /workspace/github_cpp_makefile_star2_O2/cjc12[P]ezSTL/src/../include/test.h
// Function: ezSTL::test::test_set_map_efficiency()
void test::test_set_map_efficiency() {
		const int max_number = 5000000;
		std::default_random_engine e((unsigned)time(0));
		std::uniform_int_distribution<unsigned> u(0, max_number);
		std::string cmpstl = "SGI STL";
		//std::string cmpstl = "PJ STL";
		start_info("efficiency of set and map");
		{
			test_info("set   insert");
			std::set<unsigned, less<unsigned>> std_set;
			ezSTL::set<unsigned, less<unsigned>> ezSTL_set;
			begin_timer();
			for (int i = 0; i < max_number; i++)
				ezSTL_set.insert(u(e));
			end_timer("ezSTL::set inserting", max_number);

			begin_timer();
			for (int i = 0; i < max_number; i++)
				std_set.insert(u(e));
			end_timer(cmpstl + "::set inserting", max_number);

			test_info("set   find and erase");
			auto ite1 = ezSTL_set.begin();
			unsigned int erase_count = 0;
			begin_timer();
			for (int i = 0; i < max_number; i++) {
				ite1 = ezSTL_set.find(u(e));
				if (ite1 != ezSTL_set.end()) {
					++erase_count;
					ezSTL_set.erase(ite1);
				}
			}
			end_timer("ezSTL::set finding and erasing", max_number);
			std::cout << "erasing number : " << std::to_string(erase_count) << std::endl;

			auto ite2 = std_set.begin();
			erase_count = 0;
			begin_timer();
			for (int i = 0; i < max_number; i++) {
				ite2 = std_set.find(u(e));
				if (ite2 != std_set.end()) {
					++erase_count;
					std_set.erase(ite2);
				}
			}
			end_timer(cmpstl + "::set finding and erasing", max_number);
			std::cout << "erasing number : " << std::to_string(erase_count) << std::endl;
		}
		{
			test_info("map   insert");
			std::map<unsigned, unsigned> std_map;
			ezSTL::map<unsigned, unsigned> ezSTL_map;
			begin_timer();
			for (int i = 0; i < max_number; i++)
				ezSTL_map.insert(make_pair(u(e), u(e)));
			end_timer("ezSTL::map inserting", max_number);

			begin_timer();
			for (int i = 0; i < max_number; i++)
				std_map.insert(std::make_pair(u(e), u(e)));
			end_timer(cmpstl + "::map inserting", max_number);

			test_info("map   find and erase");
			auto ite1 = ezSTL_map.begin();
			unsigned int erase_count = 0;
			begin_timer();
			for (int i = 0; i < max_number; i++) {
				ite1 = ezSTL_map.find(u(e));
				if (ite1 != ezSTL_map.end()) {
					++erase_count;
					ezSTL_map.erase(ite1);
				}
			}
			end_timer("ezSTL::map finding and erasing", max_number);
			std::cout << "erasing number : " << std::to_string(erase_count) << std::endl;

			auto ite2 = std_map.begin();
			erase_count = 0;
			begin_timer();
			for (int i = 0; i < max_number; i++) {
				ite2 = std_map.find(u(e));
				if (ite2 != std_map.end()) {
					++erase_count;
					std_map.erase(ite2);
				}
			}
			end_timer(cmpstl + "::map finding and erasing", max_number);
			std::cout << "erasing number : " << std::to_string(erase_count) << std::endl;
		}
		finish_info("efficiency of set and map");
		continue_next_test();
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
xorl %edi, %edi
callq 0x21a0
movl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
xorl %edx, %edx
divl %ecx
cmpl $0x1, %edx
adcl $0x0, %edx
movq %rdx, 0x28(%rsp)
movabsq $0x4c4b4000000000, %rax # imm = 0x4C4B4000000000
movq %rax, 0x34(%rsp)
leaq 0x983b(%rip), %rsi      # 0xe689
leaq 0x98(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x2090
leaq 0x982a(%rip), %rsi      # 0xe691
leaq 0x258(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x2090
leaq 0x258(%rsp), %rdi
callq 0x243c
leaq 0x258(%rsp), %rdi
callq 0x20c0
leaq 0x9811(%rip), %rsi      # 0xe6ab
leaq 0x238(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x2090
leaq 0x238(%rsp), %rdi
callq 0x257e
leaq 0x238(%rsp), %rdi
callq 0x20c0
leaq 0x60(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x40(%rsp), %rdi
callq 0x8756
callq 0x25c4
movl $0x4c4b40, %ebp         # imm = 0x4C4B40
leaq 0x34(%rsp), %rbx
leaq 0x28(%rsp), %r14
leaq 0x40(%rsp), %r15
leaq 0x8(%rsp), %r12
subl $0x1, %ebp
jb 0x4f29
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8144
movl %eax, 0x8(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x9a06
jmp 0x4f08
leaq 0x9788(%rip), %rsi      # 0xe6b8
leaq 0x218(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x2090
leaq 0x218(%rsp), %rdi
movl $0x4c4b40, %ebp         # imm = 0x4C4B40
movl $0x4c4b40, %esi         # imm = 0x4C4B40
callq 0x25d4
leaq 0x218(%rsp), %rdi
callq 0x20c0
callq 0x25c4
leaq 0x34(%rsp), %rbx
leaq 0x28(%rsp), %r14
leaq 0x58(%rsp), %r15
leaq 0x8(%rsp), %r12
subl $0x1, %ebp
jb 0x4fa0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8144
movl %eax, 0x8(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x9d7a
jmp 0x4f7f
leaq 0x9716(%rip), %rdx      # 0xe6bd
leaq 0x1f8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x814c
leaq 0x1f8(%rsp), %rdi
movl $0x4c4b40, %esi         # imm = 0x4C4B40
callq 0x25d4
leaq 0x1f8(%rsp), %rdi
callq 0x20c0
leaq 0x96eb(%rip), %rsi      # 0xe6cd
leaq 0x1d8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x2090
leaq 0x1d8(%rsp), %rdi
callq 0x257e
leaq 0x1d8(%rsp), %rdi
callq 0x20c0
callq 0x25c4
xorl %ebx, %ebx
movl $0x4c4b40, %r14d        # imm = 0x4C4B40
leaq 0x28(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x40(%rsp), %r13
leaq 0x3c(%rsp), %rbp
subl $0x1, %r14d
jb 0x507c
leaq 0x34(%rsp), %rdi
movq %r15, %rsi
callq 0x8144
movl %eax, 0x3c(%rsp)
movq %r12, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x9ecc
movq 0x8(%rsp), %rax
cmpq 0x48(%rsp), %rax
je 0x502f
movq %rax, 0x90(%rsp)
movq %r13, %rdi
leaq 0x90(%rsp), %rsi
callq 0x8184
incl %ebx
jmp 0x502f
leaq 0x965f(%rip), %rsi      # 0xe6e2
leaq 0x1b8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x2090
leaq 0x1b8(%rsp), %rdi
movl $0x4c4b40, %esi         # imm = 0x4C4B40
callq 0x25d4
leaq 0x1b8(%rsp), %rdi
callq 0x20c0
movq 0xff1d(%rip), %rdi      # 0x14fd8
leaq 0x963f(%rip), %rsi      # 0xe701
callq 0x21d0
movq %rax, %r14
leaq 0x8(%rsp), %rdi
movl %ebx, %esi
callq 0x8195
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x2190
movq %rax, %rdi
callq 0x20d0
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x20c0
callq 0x25c4
xorl %ebx, %ebx
movl $0x4c4b40, %ebp         # imm = 0x4C4B40
leaq 0x34(%rsp), %r15
leaq 0x28(%rsp), %r12
leaq 0x58(%rsp), %r13
subl $0x1, %ebp
jb 0x514b
movq %r15, %rdi
movq %r12, %rsi
callq 0x8144
movl %eax, 0x8(%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xa24c
leaq 0x60(%rsp), %rcx
cmpq %rcx, %rax
je 0x5113
movq %r13, %rdi
movq %rax, %rsi
callq 0xa29e
incl %ebx
jmp 0x5113
leaq 0x9595(%rip), %rdx      # 0xe6e7
leaq 0x198(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x814c
leaq 0x198(%rsp), %rdi
movl $0x4c4b40, %esi         # imm = 0x4C4B40
callq 0x25d4
leaq 0x198(%rsp), %rdi
callq 0x20c0
movq 0xfe4b(%rip), %rdi      # 0x14fd8
leaq 0x956d(%rip), %rsi      # 0xe701
callq 0x21d0
movq %rax, %r14
leaq 0x8(%rsp), %rdi
movl %ebx, %esi
callq 0x8195
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x2190
movq %rax, %rdi
callq 0x20d0
leaq 0x8(%rsp), %rdi
callq 0x20c0
leaq 0x40(%rsp), %rdi
callq 0x877c
leaq 0x58(%rsp), %rdi
callq 0x87f6
leaq 0x92ba(%rip), %rsi      # 0xe49c
leaq 0x178(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x2090
leaq 0x178(%rsp), %rdi
callq 0x257e
leaq 0x178(%rsp), %rdi
callq 0x20c0
andl $0x0, 0x60(%rsp)
andq $0x0, 0x68(%rsp)
leaq 0x60(%rsp), %rax
movq %rax, 0x70(%rsp)
movq %rax, 0x78(%rsp)
andq $0x0, 0x80(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x883e
callq 0x25c4
movl $0x4c4b40, %r13d        # imm = 0x4C4B40
leaq 0x34(%rsp), %rbx
leaq 0x28(%rsp), %r14
leaq 0x40(%rsp), %r15
leaq 0x8(%rsp), %r12
subl $0x1, %r13d
jb 0x528d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8144
movl %eax, %ebp
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8144
movl %ebp, 0x8(%rsp)
movl %eax, 0xc(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0xa2ea
jmp 0x525a
leaq 0x947f(%rip), %rsi      # 0xe713
leaq 0x158(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x2090
leaq 0x158(%rsp), %rdi
movl $0x4c4b40, %r13d        # imm = 0x4C4B40
movl $0x4c4b40, %esi         # imm = 0x4C4B40
callq 0x25d4
leaq 0x158(%rsp), %rdi
callq 0x20c0
callq 0x25c4
leaq 0x34(%rsp), %rbx
leaq 0x28(%rsp), %r14
leaq 0x58(%rsp), %r15
leaq 0x8(%rsp), %r12
subl $0x1, %r13d
jb 0x531d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8144
movl %eax, %ebp
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8144
shlq $0x20, %rax
movl %ebp, %ecx
orq %rax, %rcx
movq %rcx, 0x8(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0xa56c
jmp 0x52e4
leaq 0x93f4(%rip), %rdx      # 0xe718
leaq 0x138(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x814c
leaq 0x138(%rsp), %rdi
movl $0x4c4b40, %esi         # imm = 0x4C4B40
callq 0x25d4
leaq 0x138(%rsp), %rdi
callq 0x20c0
leaq 0x93c9(%rip), %rsi      # 0xe728
leaq 0x118(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x2090
leaq 0x118(%rsp), %rdi
callq 0x257e
leaq 0x118(%rsp), %rdi
callq 0x20c0
callq 0x25c4
xorl %ebx, %ebx
movl $0x4c4b40, %r14d        # imm = 0x4C4B40
leaq 0x28(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x40(%rsp), %r13
leaq 0x3c(%rsp), %rbp
subl $0x1, %r14d
jb 0x53f9
leaq 0x34(%rsp), %rdi
movq %r15, %rsi
callq 0x8144
movl %eax, 0x3c(%rsp)
movq %r12, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x81d4
movq 0x8(%rsp), %rax
cmpq 0x48(%rsp), %rax
je 0x53ac
movq %rax, 0x88(%rsp)
movq %r13, %rdi
leaq 0x88(%rsp), %rsi
callq 0x81f8
incl %ebx
jmp 0x53ac
leaq 0x933d(%rip), %rsi      # 0xe73d
leaq 0xf8(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x2090
leaq 0xf8(%rsp), %rdi
movl $0x4c4b40, %esi         # imm = 0x4C4B40
callq 0x25d4
leaq 0xf8(%rsp), %rdi
callq 0x20c0
movq 0xfba0(%rip), %rdi      # 0x14fd8
leaq 0x92c2(%rip), %rsi      # 0xe701
callq 0x21d0
movq %rax, %r14
leaq 0x8(%rsp), %rdi
movl %ebx, %esi
callq 0x8195
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x2190
movq %rax, %rdi
callq 0x20d0
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x20c0
callq 0x25c4
xorl %ebx, %ebx
movl $0x4c4b40, %ebp         # imm = 0x4C4B40
leaq 0x34(%rsp), %r15
leaq 0x28(%rsp), %r12
leaq 0x58(%rsp), %r13
subl $0x1, %ebp
jb 0x54c8
movq %r15, %rdi
movq %r12, %rsi
callq 0x8144
movl %eax, 0x8(%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xaa68
leaq 0x60(%rsp), %rcx
cmpq %rcx, %rax
je 0x5490
movq %r13, %rdi
movq %rax, %rsi
callq 0xaaba
incl %ebx
jmp 0x5490
leaq 0x9273(%rip), %rdx      # 0xe742
leaq 0xd8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x814c
leaq 0xd8(%rsp), %rdi
movl $0x4c4b40, %esi         # imm = 0x4C4B40
callq 0x25d4
leaq 0xd8(%rsp), %rdi
callq 0x20c0
movq 0xface(%rip), %rdi      # 0x14fd8
leaq 0x91f0(%rip), %rsi      # 0xe701
callq 0x21d0
movq %rax, %r14
leaq 0x8(%rsp), %rdi
movl %ebx, %esi
callq 0x8195
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x2190
movq %rax, %rdi
callq 0x20d0
leaq 0x8(%rsp), %rdi
callq 0x20c0
leaq 0x40(%rsp), %rdi
callq 0x8864
leaq 0x58(%rsp), %rdi
callq 0x88de
leaq 0x9132(%rip), %rsi      # 0xe691
leaq 0xb8(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x2090
leaq 0xb8(%rsp), %rdi
callq 0x2542
leaq 0xb8(%rsp), %rdi
callq 0x20c0
callq 0x25a2
leaq 0x98(%rsp), %rdi
callq 0x20c0
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x56ec
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x56e5
jmp 0x56ec
jmp 0x5729
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
jmp 0x56fd
jmp 0x5729
jmp 0x5729
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
jmp 0x56fd
jmp 0x5729
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
jmp 0x56fd
jmp 0x5729
movq %rax, %rbx
leaq 0x138(%rsp), %rdi
jmp 0x56fd
jmp 0x5729
movq %rax, %rbx
leaq 0x158(%rsp), %rdi
jmp 0x56fd
jmp 0x5729
movq %rax, %rbx
jmp 0x5736
movq %rax, %rbx
leaq 0x178(%rsp), %rdi
jmp 0x56e5
jmp 0x56ec
jmp 0x5748
movq %rax, %rbx
leaq 0x198(%rsp), %rdi
jmp 0x5710
jmp 0x5748
jmp 0x5748
movq %rax, %rbx
leaq 0x1b8(%rsp), %rdi
jmp 0x5710
jmp 0x5748
movq %rax, %rbx
leaq 0x1d8(%rsp), %rdi
jmp 0x5710
jmp 0x5748
movq %rax, %rbx
leaq 0x1f8(%rsp), %rdi
jmp 0x5710
jmp 0x5748
movq %rax, %rbx
leaq 0x218(%rsp), %rdi
jmp 0x5710
jmp 0x5748
movq %rax, %rbx
jmp 0x5755
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
jmp 0x56e5
jmp 0x56ec
movq %rax, %rbx
leaq 0x258(%rsp), %rdi
callq 0x20c0
jmp 0x575f
movq %rax, %rbx
jmp 0x575f
jmp 0x56f5
jmp 0x5729
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x20c0
jmp 0x572c
jmp 0x5708
jmp 0x5748
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x20c0
jmp 0x574b
jmp 0x5729
jmp 0x5729
jmp 0x5748
jmp 0x5748
jmp 0x5729
jmp 0x5729
jmp 0x5729
jmp 0x5729
jmp 0x5729
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x8864
leaq 0x58(%rsp), %rdi
callq 0x88de
jmp 0x575f
jmp 0x5748
jmp 0x5748
jmp 0x5748
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x877c
leaq 0x58(%rsp), %rdi
callq 0x87f6
leaq 0x98(%rsp), %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x22d0