Skip to content

Instantly share code, notes, and snippets.

@erikcorry
Created June 3, 2021 13:58
Show Gist options
  • Save erikcorry/c9defed0ffdc15a7cd40fbc0841a67c0 to your computer and use it in GitHub Desktop.
Save erikcorry/c9defed0ffdc15a7cd40fbc0841a67c0 to your computer and use it in GitHub Desktop.
Ainos-MBP:~ erik$ ./toit/build/release64/bin/toitvm fly.toit
2 iterations, 7.0us per operation
4 iterations, 4.0us per operation
8 iterations, 3.375us per operation
16 iterations, 2.8125us per operation
32 iterations, 2.6875us per operation
64 iterations, 2.25us per operation
128 iterations, 2.046875us per operation
256 iterations, 1.91015625us per operation
512 iterations, 2.25us per operation
1024 iterations, 2.068359375us per operation
2048 iterations, 2.228515625us per operation
4096 iterations, 3.32177734375us per operation
8192 iterations, 4.3521728515625us per operation
16384 iterations, 4.60357666015625us per operation
32768 iterations, 4.90618896484375us per operation
65536 iterations, 4.9374542236328125us per operation
131072 iterations, 5.0135345458984375us per operation
262144 iterations, 5.08797454833984375us per operation
524288 iterations, 5.08414459228515625us per operation
1048576 iterations, 5.2077283859252929688us per operation
Ainos-MBP:~ erik$ python3 fly.py
2 iterations, 1.907349us per operation
4 iterations, 0.953674us per operation
8 iterations, 0.596046us per operation
16 iterations, 0.551343us per operation
32 iterations, 0.536442us per operation
64 iterations, 0.532717us per operation
128 iterations, 0.538304us per operation
256 iterations, 0.628643us per operation
512 iterations, 0.630971us per operation
1024 iterations, 0.694301us per operation
2048 iterations, 1.062523us per operation
4096 iterations, 1.762004us per operation
8192 iterations, 3.226800us per operation
16384 iterations, 7.031063us per operation
32768 iterations, 13.375880us per operation
65536 iterations, 24.526224us per operation
131072 iterations, 48.666163us per operation
262144 iterations, 104.135922us per operation
524288 iterations, 278.332405us per operation
# I stopped here before it ate all the battery of my laptop
@erikcorry
Copy link
Author

Fly.toit:

fifo size/int:
  duration := Duration.of:
    set := {}
    size.repeat:
      set.add it
    while not set.is_empty:
      element := set.first
      set.remove element
  print "$size iterations, $(duration.in_us.to_float / size)us per operation"

main:
  20.repeat:
    fifo 1 << (it + 1)

@erikcorry
Copy link
Author

Fly.py:

import time
  
def fifo(size):
    start = time.time()

    my_dict = {}
    for i in range(size):
        my_dict[i] = i

    while len(my_dict) > 0:
        remove_first(my_dict)

    end = time.time()
    print("%d iterations, %fus per operation" % (size, (end - start) * 1000000.0 / size))

def remove_first(my_dict):
    i = iter(my_dict)
    elt = next(i)
    del my_dict[elt]
    return elt


for s in range(20):
    fifo(1 << (s + 1))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment