Created
May 17, 2022 05:00
-
-
Save rmrfus/6e1f08b865077c72272b392424249707 to your computer and use it in GitHub Desktop.
list_vs_set
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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