// File: wichtounet[P]articles/src/vector_list_update_1/bench.cpp
// Function: bench_fill_front<Trivial<8>>::run()
static void run(){
        new_graph<T>("fill_front", "us");

        auto sizes = { 10000, 20000, 30000, 40000, 50000, 60000, 70000, 80000, 90000, 100000 };

        // it is too slow with bigger data types
        if(is_small<T>()){
            bench<std::vector<T>, microseconds, Empty, FillFront>("vector", sizes);
        }

        bench<std::list<T>,   microseconds, Empty, FillFront>("list",   sizes);
        bench<std::deque<T>,  microseconds, Empty, FillFront>("deque",  sizes);
        // colony is unordered
    }

// Assembly:
subq $0x138, %rsp            # imm = 0x138
leaq 0x117(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x5370
movq 0x20(%rsp), %rdx
leaq 0x1214de(%rip), %rsi    # 0x17f573
leaq 0x118(%rsp), %rdi
callq 0x52a0
jmp 0x5e0a4
leaq 0xdf(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x5370
movq 0x18(%rsp), %rdx
leaq 0x12140c(%rip), %rsi    # 0x17f4ce
leaq 0xe0(%rsp), %rdi
callq 0x52a0
jmp 0x5e0d1
leaq 0x118(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x12830
jmp 0x5e0e8
leaq 0xe0(%rsp), %rdi
callq 0x5150
leaq 0xdf(%rsp), %rdi
callq 0x5240
leaq 0x118(%rsp), %rdi
callq 0x5150
leaq 0x117(%rsp), %rdi
callq 0x5240
movabsq $0x186a000015f90, %rax  # imm = 0x186A000015F90
movq %rax, 0xc0(%rsp)
vmovdqu 0x1217f6(%rip), %ymm0   # 0x17f92c
vmovdqu %ymm0, 0xa0(%rsp)
leaq 0xa0(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq $0xa, 0xd0(%rsp)
leaq 0x7f(%rsp), %rdi
movq %rdi, 0x10(%rsp)
vzeroupper
callq 0x5370
movq 0x10(%rsp), %rdx
leaq 0x121358(%rip), %rsi    # 0x17f4d1
leaq 0x80(%rsp), %rdi
callq 0x52a0
jmp 0x5e188
leaq 0x80(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x5e3c0
jmp 0x5e19f
leaq 0x80(%rsp), %rdi
callq 0x5150
leaq 0x7f(%rsp), %rdi
callq 0x5240
leaq 0x57(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x5370
movq 0x8(%rsp), %rdx
leaq 0x121307(%rip), %rsi    # 0x17f4d8
leaq 0x58(%rsp), %rdi
callq 0x52a0
jmp 0x5e1dd
leaq 0x58(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x5e5f0
jmp 0x5e1f1
leaq 0x58(%rsp), %rdi
callq 0x5150
leaq 0x57(%rsp), %rdi
callq 0x5240
leaq 0x2f(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x5370
movq (%rsp), %rdx
leaq 0x1212bf(%rip), %rsi    # 0x17f4dd
leaq 0x30(%rsp), %rdi
callq 0x52a0
jmp 0x5e22a
leaq 0x30(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x5e820
jmp 0x5e23e
leaq 0x30(%rsp), %rdi
callq 0x5150
leaq 0x2f(%rsp), %rdi
callq 0x5240
addq $0x138, %rsp            # imm = 0x138
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
jmp 0x5e2c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
jmp 0x5e2a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
leaq 0xe0(%rsp), %rdi
callq 0x5150
leaq 0xdf(%rsp), %rdi
callq 0x5240
leaq 0x118(%rsp), %rdi
callq 0x5150
leaq 0x117(%rsp), %rdi
callq 0x5240
jmp 0x5e394
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
jmp 0x5e30a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x5150
leaq 0x7f(%rsp), %rdi
callq 0x5240
jmp 0x5e394
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
jmp 0x5e34a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
leaq 0x58(%rsp), %rdi
callq 0x5150
leaq 0x57(%rsp), %rdi
callq 0x5240
jmp 0x5e394
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
jmp 0x5e38a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x108(%rsp)
movl %eax, 0x104(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x5150
leaq 0x2f(%rsp), %rdi
callq 0x5240
movq 0x108(%rsp), %rdi
callq 0x5360
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)