repl.it
@JustinTArthur/

In queries

Python

Benchmarks of in queries on 3 different data types.

fork
loading
Files
  • main.py
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from timeit import timeit
def construct_list():
    return ['elementum', 'nisi.', 'feugiat,', 'sodales.', 'fringilla,', 'Maecenas', 'lacus', 'cursus', 'ex', 'mauris', 'Nullam', 'finibus', 'facilisis.', 'sed', 'ligula,', 'a.', 'facilisi.', 'nisi', 'fringilla', 'mi.', 'egestas', 'laoreet', 'velit', 'vestibulum', 'rhoncus', 'non', 'magna', 'ullamcorper.', 'in', 'Integer', 'nulla,', 'porttitor', 'diam', 'posuere,', 'elit.', 'ante', 'ornare', 'eget', 'placerat', 'semper.', 'pulvinar', 'quam,', 'Suspendisse', 'In', 'lectus', 'enim', 'ultrices', 'Nam', 'mattis', 'ante.', 'a', 'nisl', 'consectetur.', 'Nulla', 'vitae.', 'ullamcorper', 'sagittis', 'dolor', 'quis', 'Donec', 'dictum', 'fermentum', 'eros,', 'eleifend.', 'malesuada', 'vel', 'Phasellus', 'orci', 'Sed', 'condimentum.', 'dignissim', 'mi', 'ipsum', 'eu', 'vehicula,', 'tortor.', 'iaculis,', 'ut,', 'et', 'bibendum', 'pellentesque', 'sodales', 'turpis,', 'porttitor,', 'Curabitur', 'cursus.', 'sed.', 'tincidunt', 'metus', 'amet', 'vitae', 'vulputate', 'nec', 'sollicitudin', 'Nunc', 'Quisque', 'hendrerit', 'molestie', 'aliquam', 'commodo', 'amet,', 'blandit', 'dapibus.', 'Praesent', 'congue', 'libero', 'at', 'imperdiet.', 'nibh,', 'Proin', 'lectus.', 'pharetra', 'faucibus.', 'Lorem', 'augue', 'est', 'mollis', 'viverra', 'eros', 'volutpat.', 'Fusce', 'tortor,', 'urna,', 'iaculis', 'varius', 'volutpat', 'leo.', 'ut', 'lobortis.', 'leo', 'Duis', 'aliquam.', 'quam', 'facilisis', 'erat', 'sit', 'dictum,', 'dolor,', 'euismod', 'ex.', 'in,', 'Aliquam', 'consectetur', 'porta.', 'tellus,', 'in.', 'arcu', 'et.', 'elit', 'dictum.', 'commodo.', 'nulla', 'tellus', 'justo', 'Mauris', 'risus', 'neque', 'est.', 'venenatis', 'id', 'ac', 'lacinia', 'mattis.', 'adipiscing', 'placerat,']

def construct_set():
    return {'elementum', 'nisi.', 'feugiat,', 'sodales.', 'fringilla,', 'Maecenas', 'lacus', 'cursus', 'ex', 'mauris', 'Nullam', 'finibus', 'facilisis.', 'sed', 'ligula,', 'a.', 'facilisi.', 'nisi', 'fringilla', 'mi.', 'egestas', 'laoreet', 'velit', 'vestibulum', 'rhoncus', 'non', 'magna', 'ullamcorper.', 'in', 'Integer', 'nulla,', 'porttitor', 'diam', 'posuere,', 'elit.', 'ante', 'ornare', 'eget', 'placerat', 'semper.', 'pulvinar', 'quam,', 'Suspendisse', 'In', 'lectus', 'enim', 'ultrices', 'Nam', 'mattis', 'ante.', 'a', 'nisl', 'consectetur.', 'Nulla', 'vitae.', 'ullamcorper', 'sagittis', 'dolor', 'quis', 'Donec', 'dictum', 'fermentum', 'eros,', 'eleifend.', 'malesuada', 'vel', 'Phasellus', 'orci', 'Sed', 'condimentum.', 'dignissim', 'mi', 'ipsum', 'eu', 'vehicula,', 'tortor.', 'iaculis,', 'ut,', 'et', 'bibendum', 'pellentesque', 'sodales', 'turpis,', 'porttitor,', 'Curabitur', 'cursus.', 'sed.', 'tincidunt', 'metus', 'amet', 'vitae', 'vulputate', 'nec', 'sollicitudin', 'Nunc', 'Quisque', 'hendrerit', 'molestie', 'aliquam', 'commodo', 'amet,', 'blandit', 'dapibus.', 'Praesent', 'congue', 'libero', 'at', 'imperdiet.', 'nibh,', 'Proin', 'lectus.', 'pharetra', 'faucibus.', 'Lorem', 'augue', 'est', 'mollis', 'viverra', 'eros', 'volutpat.', 'Fusce', 'tortor,', 'urna,', 'iaculis', 'varius', 'volutpat', 'leo.', 'ut', 'lobortis.', 'leo', 'Duis', 'aliquam.', 'quam', 'facilisis', 'erat', 'sit', 'dictum,', 'dolor,', 'euismod', 'ex.', 'in,', 'Aliquam', 'consectetur', 'porta.', 'tellus,', 'in.', 'arcu', 'et.', 'elit', 'dictum.', 'commodo.', 'nulla', 'tellus', 'justo', 'Mauris', 'risus', 'neque', 'est.', 'venenatis', 'id', 'ac', 'lacinia', 'mattis.', 'adipiscing', 'placerat,'}

def construct_tuple():
    # Likely useless since constants are constructed at compile time
   return ('elementum', 'nisi.', 'feugiat,', 'sodales.', 'fringilla,', 'Maecenas', 'lacus', 'cursus', 'ex', 'mauris', 'Nullam', 'finibus', 'facilisis.', 'sed', 'ligula,', 'a.', 'facilisi.', 'nisi', 'fringilla', 'mi.', 'egestas', 'laoreet', 'velit', 'vestibulum', 'rhoncus', 'non', 'magna', 'ullamcorper.', 'in', 'Integer', 'nulla,', 'porttitor', 'diam', 'posuere,', 'elit.', 'ante', 'ornare', 'eget', 'placerat', 'semper.', 'pulvinar', 'quam,', 'Suspendisse', 'In', 'lectus', 'enim', 'ultrices', 'Nam', 'mattis', 'ante.', 'a', 'nisl', 'consectetur.', 'Nulla', 'vitae.', 'ullamcorper', 'sagittis', 'dolor', 'quis', 'Donec', 'dictum', 'fermentum', 'eros,', 'eleifend.', 'malesuada', 'vel', 'Phasellus', 'orci', 'Sed', 'condimentum.', 'dignissim', 'mi', 'ipsum', 'eu', 'vehicula,', 'tortor.', 'iaculis,', 'ut,', 'et', 'bibendum', 'pellentesque', 'sodales', 'turpis,', 'porttitor,', 'Curabitur', 'cursus.', 'sed.', 'tincidunt', 'metus', 'amet', 'vitae', 'vulputate', 'nec', 'sollicitudin', 'Nunc', 'Quisque', 'hendrerit', 'molestie', 'aliquam', 'commodo', 'amet,', 'blandit', 'dapibus.', 'Praesent', 'congue', 'libero', 'at', 'imperdiet.', 'nibh,', 'Proin', 'lectus.', 'pharetra', 'faucibus.', 'Lorem', 'augue', 'est', 'mollis', 'viverra', 'eros', 'volutpat.', 'Fusce', 'tortor,', 'urna,', 'iaculis', 'varius', 'volutpat', 'leo.', 'ut', 'lobortis.', 'leo', 'Duis', 'aliquam.', 'quam', 'facilisis', 'erat', 'sit', 'dictum,', 'dolor,', 'euismod', 'ex.', 'in,', 'Aliquam', 'consectetur', 'porta.', 'tellus,', 'in.', 'arcu', 'et.', 'elit', 'dictum.', 'commodo.', 'nulla', 'tellus', 'justo', 'Mauris', 'risus', 'neque', 'est.', 'venenatis', 'id', 'ac', 'lacinia', 'mattis.', 'adipiscing', 'placerat,')


print('Runtime Construction Performance')
print(f'set literal: {timeit(construct_set)}')
print(f'list literal: {timeit(construct_list)}')
print(f'tuple literal: {timeit(construct_tuple)}')
print(f'frozenset from list: {timeit("frozenset(a)", setup="a = construct_list()", globals=globals())}')
print(f'frozenset from tuple: {timeit("frozenset(a)", setup="a = construct_tuple()", globals=globals())}')
print(f'frozenset from set: {timeit("frozenset(a)", setup="a = construct_set()", globals=globals())}')

print('\nin Query Performance')
in_query_code = 'b = "element" in a'
print(f'in list: {timeit(in_query_code, globals = {"a": construct_list()})}')
print(f'in tuple: {timeit(in_query_code, globals = {"a": construct_tuple()})}')
print(f'in set: {timeit(in_query_code, globals = {"a": construct_set()})}')
print(f'in frozenset: {timeit(in_query_code, globals = {"a": frozenset(construct_set())})}')
?