Skip to content

Instantly share code, notes, and snippets.

@rmrfus
Created May 17, 2022 05:00
Show Gist options
  • Save rmrfus/6e1f08b865077c72272b392424249707 to your computer and use it in GitHub Desktop.
Save rmrfus/6e1f08b865077c72272b392424249707 to your computer and use it in GitHub Desktop.
list_vs_set
List:
... 49535us
... 48208us
... 48285us
... 48101us
... 48583us
... 47887us
... 47908us
... 47991us
... 48314us
... 47771us
AVG 48258us
Set:
... 2us
... 1us
... 1us
... 2us
... 1us
... 0us
... 1us
... 0us
... 0us
... 1us
AVG 0us
#!/usr/bin/env python3
import time
from random import randint
from typing import Any, Callable, List
def test_list(size: int, wat: int) -> int:
the_list = list(range(0, size))
start = time.perf_counter()
del the_list[the_list.index(wat)]
return int((time.perf_counter() - start) * 1000_000)
def test_set(size: int, wat: int) -> int:
s = set(range(0, size))
start = time.perf_counter()
s.remove(wat)
return int((time.perf_counter() - start) * 1000_000)
def run_test(f: Callable[..., int], args: List[Any], reps: int) -> None:
results: List[int] = []
for _ in range(0, reps):
r: int = f(*args)
results.append(r)
print(f"... {r}us")
print(f"AVG {int(sum(results)/len(results))}us")
def main() -> None:
size = 1_0_000_000
wat = randint(0, size)
reps = 10
print("List:")
run_test(test_list, [size, wat], reps)
print("Set:")
run_test(test_set, [size, wat], reps)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment