Skip to content

Instantly share code, notes, and snippets.

@yipo
Last active November 22, 2022 03:02
Show Gist options
  • Save yipo/e26f6e7458b716f80e699074e553498d to your computer and use it in GitHub Desktop.
Save yipo/e26f6e7458b716f80e699074e553498d to your computer and use it in GitHub Desktop.
Python look-up speed test
#!/usr/bin/env python
from time_cost import time_cost
# Random String Generator: https://www.random.org/strings/
DB1 = (
'wotiwiipgp', 'qdzrhparut', 'ofwqqecqrr', 'rdgbjdforx', 'jdqeuigspz', 'dmownjzfwx', 'trpdxgzeqk', 'jvrsoxeawl', 'fenctbueyy', 'dohnrpadhb',
'tcebypijcc', 'xffosndhej', 'otarokcejl', 'kynxhhywdg', 'pqwunxqmjt', 'ctpooqprok', 'vraheesdyr', 'jodbmgajpr', 'vxfmyqurfx', 'ocnpjbjzcp',
'jlirdgubyf', 'xlbgddxixk', 'rrhqfoiyby', 'nmgrsgltsm', 'oqonqggzhi', 'kkchnjgrqk', 'wysoqvjvno', 'pruiloxmca', 'coayerlosw', 'hifvxivwtr',
'thhrcytgda', 'brnwhfudiw', 'zogzuygdfi', 'rgidrjdkmr', 'bypsmokbcb', 'zelaxxryfx', 'kmwvibxpgw', 'kxdecomhbj', 'cmkpyfisch', 'wxhcbnbwbv',
'trivoygcxm', 'avxxbdjvdl', 'xbmudygvlu', 'abrawrjion', 'lwntggklns', 'kdtgnzhnnf', 'dcsnktxiou', 'wnhjoxonkp', 'becgdhmesk', 'mvpjvzcauv',
'xhtsszlfbz', 'vkqxxsqxqm', 'dhqlnmezdc', 'jkrzwolowx', 'autkedpxag', 'kvbhowzntn', 'zywwqxstnr', 'nhgpelthxd', 'xlqzgigzne', 'fwkzogarra',
'iejbckdhja', 'nwomnmbtbu', 'vyyxjhgyyg', 'fwsvvviarz', 'pqiqtzhzam', 'irawicbflc', 'cbvwwyjomw', 'tfyuiccjyq', 'vkeujvhrdf', 'onkwnubwzi',
'rhyufvfzpt', 'tewojprajk', 'gftofqagzl', 'llqoydhlct', 'szmwvvxery', 'dgwveadaru', 'gvuzkmacei', 'clapkujqdo', 'qmfkkjokxn', 'sviehleaps',
'oxegekccat', 'guclsmdkeh', 'rilpsvjtko', 'riudgbdmse', 'luquemqrae', 'ohemykyaho', 'nwarwfyhah', 'tcwiujtnwm', 'oezrorarse', 'zggyzldbyz',
'bdhbayrvgn', 'ijzitpusks', 'ejgbydcpqd', 'sexskdwkth', 'pdzmpuznbf', 'usnvgtopvk', 'plwbhnoohu', 'lgwcxtezug', 'xjdbaopgsh', 'bnseavfbas',
)
DB2 = [
'wotiwiipgp', 'qdzrhparut', 'ofwqqecqrr', 'rdgbjdforx', 'jdqeuigspz', 'dmownjzfwx', 'trpdxgzeqk', 'jvrsoxeawl', 'fenctbueyy', 'dohnrpadhb',
'tcebypijcc', 'xffosndhej', 'otarokcejl', 'kynxhhywdg', 'pqwunxqmjt', 'ctpooqprok', 'vraheesdyr', 'jodbmgajpr', 'vxfmyqurfx', 'ocnpjbjzcp',
'jlirdgubyf', 'xlbgddxixk', 'rrhqfoiyby', 'nmgrsgltsm', 'oqonqggzhi', 'kkchnjgrqk', 'wysoqvjvno', 'pruiloxmca', 'coayerlosw', 'hifvxivwtr',
'thhrcytgda', 'brnwhfudiw', 'zogzuygdfi', 'rgidrjdkmr', 'bypsmokbcb', 'zelaxxryfx', 'kmwvibxpgw', 'kxdecomhbj', 'cmkpyfisch', 'wxhcbnbwbv',
'trivoygcxm', 'avxxbdjvdl', 'xbmudygvlu', 'abrawrjion', 'lwntggklns', 'kdtgnzhnnf', 'dcsnktxiou', 'wnhjoxonkp', 'becgdhmesk', 'mvpjvzcauv',
'xhtsszlfbz', 'vkqxxsqxqm', 'dhqlnmezdc', 'jkrzwolowx', 'autkedpxag', 'kvbhowzntn', 'zywwqxstnr', 'nhgpelthxd', 'xlqzgigzne', 'fwkzogarra',
'iejbckdhja', 'nwomnmbtbu', 'vyyxjhgyyg', 'fwsvvviarz', 'pqiqtzhzam', 'irawicbflc', 'cbvwwyjomw', 'tfyuiccjyq', 'vkeujvhrdf', 'onkwnubwzi',
'rhyufvfzpt', 'tewojprajk', 'gftofqagzl', 'llqoydhlct', 'szmwvvxery', 'dgwveadaru', 'gvuzkmacei', 'clapkujqdo', 'qmfkkjokxn', 'sviehleaps',
'oxegekccat', 'guclsmdkeh', 'rilpsvjtko', 'riudgbdmse', 'luquemqrae', 'ohemykyaho', 'nwarwfyhah', 'tcwiujtnwm', 'oezrorarse', 'zggyzldbyz',
'bdhbayrvgn', 'ijzitpusks', 'ejgbydcpqd', 'sexskdwkth', 'pdzmpuznbf', 'usnvgtopvk', 'plwbhnoohu', 'lgwcxtezug', 'xjdbaopgsh', 'bnseavfbas',
]
DB3 = {
'wotiwiipgp', 'qdzrhparut', 'ofwqqecqrr', 'rdgbjdforx', 'jdqeuigspz', 'dmownjzfwx', 'trpdxgzeqk', 'jvrsoxeawl', 'fenctbueyy', 'dohnrpadhb',
'tcebypijcc', 'xffosndhej', 'otarokcejl', 'kynxhhywdg', 'pqwunxqmjt', 'ctpooqprok', 'vraheesdyr', 'jodbmgajpr', 'vxfmyqurfx', 'ocnpjbjzcp',
'jlirdgubyf', 'xlbgddxixk', 'rrhqfoiyby', 'nmgrsgltsm', 'oqonqggzhi', 'kkchnjgrqk', 'wysoqvjvno', 'pruiloxmca', 'coayerlosw', 'hifvxivwtr',
'thhrcytgda', 'brnwhfudiw', 'zogzuygdfi', 'rgidrjdkmr', 'bypsmokbcb', 'zelaxxryfx', 'kmwvibxpgw', 'kxdecomhbj', 'cmkpyfisch', 'wxhcbnbwbv',
'trivoygcxm', 'avxxbdjvdl', 'xbmudygvlu', 'abrawrjion', 'lwntggklns', 'kdtgnzhnnf', 'dcsnktxiou', 'wnhjoxonkp', 'becgdhmesk', 'mvpjvzcauv',
'xhtsszlfbz', 'vkqxxsqxqm', 'dhqlnmezdc', 'jkrzwolowx', 'autkedpxag', 'kvbhowzntn', 'zywwqxstnr', 'nhgpelthxd', 'xlqzgigzne', 'fwkzogarra',
'iejbckdhja', 'nwomnmbtbu', 'vyyxjhgyyg', 'fwsvvviarz', 'pqiqtzhzam', 'irawicbflc', 'cbvwwyjomw', 'tfyuiccjyq', 'vkeujvhrdf', 'onkwnubwzi',
'rhyufvfzpt', 'tewojprajk', 'gftofqagzl', 'llqoydhlct', 'szmwvvxery', 'dgwveadaru', 'gvuzkmacei', 'clapkujqdo', 'qmfkkjokxn', 'sviehleaps',
'oxegekccat', 'guclsmdkeh', 'rilpsvjtko', 'riudgbdmse', 'luquemqrae', 'ohemykyaho', 'nwarwfyhah', 'tcwiujtnwm', 'oezrorarse', 'zggyzldbyz',
'bdhbayrvgn', 'ijzitpusks', 'ejgbydcpqd', 'sexskdwkth', 'pdzmpuznbf', 'usnvgtopvk', 'plwbhnoohu', 'lgwcxtezug', 'xjdbaopgsh', 'bnseavfbas',
}
QUERY = (
'chrvvhggzh', 'lxoufraenw', 'ybiycsffnx', 'znprghdoip', 'ewpndqpmyn',
'ecepfqhxoo', 'munmfwuaoe', 'ojktbmdogk', 'thzrvaatlh', 'yahaharyge')
def func1():
for item in QUERY:
yield item in DB1
def func2():
for item in QUERY:
yield item in DB2
def func3():
for item in QUERY:
yield item in DB3
def func4():
DB4 = {
'wotiwiipgp', 'qdzrhparut', 'ofwqqecqrr', 'rdgbjdforx', 'jdqeuigspz', 'dmownjzfwx', 'trpdxgzeqk', 'jvrsoxeawl', 'fenctbueyy', 'dohnrpadhb',
'tcebypijcc', 'xffosndhej', 'otarokcejl', 'kynxhhywdg', 'pqwunxqmjt', 'ctpooqprok', 'vraheesdyr', 'jodbmgajpr', 'vxfmyqurfx', 'ocnpjbjzcp',
'jlirdgubyf', 'xlbgddxixk', 'rrhqfoiyby', 'nmgrsgltsm', 'oqonqggzhi', 'kkchnjgrqk', 'wysoqvjvno', 'pruiloxmca', 'coayerlosw', 'hifvxivwtr',
'thhrcytgda', 'brnwhfudiw', 'zogzuygdfi', 'rgidrjdkmr', 'bypsmokbcb', 'zelaxxryfx', 'kmwvibxpgw', 'kxdecomhbj', 'cmkpyfisch', 'wxhcbnbwbv',
'trivoygcxm', 'avxxbdjvdl', 'xbmudygvlu', 'abrawrjion', 'lwntggklns', 'kdtgnzhnnf', 'dcsnktxiou', 'wnhjoxonkp', 'becgdhmesk', 'mvpjvzcauv',
'xhtsszlfbz', 'vkqxxsqxqm', 'dhqlnmezdc', 'jkrzwolowx', 'autkedpxag', 'kvbhowzntn', 'zywwqxstnr', 'nhgpelthxd', 'xlqzgigzne', 'fwkzogarra',
'iejbckdhja', 'nwomnmbtbu', 'vyyxjhgyyg', 'fwsvvviarz', 'pqiqtzhzam', 'irawicbflc', 'cbvwwyjomw', 'tfyuiccjyq', 'vkeujvhrdf', 'onkwnubwzi',
'rhyufvfzpt', 'tewojprajk', 'gftofqagzl', 'llqoydhlct', 'szmwvvxery', 'dgwveadaru', 'gvuzkmacei', 'clapkujqdo', 'qmfkkjokxn', 'sviehleaps',
'oxegekccat', 'guclsmdkeh', 'rilpsvjtko', 'riudgbdmse', 'luquemqrae', 'ohemykyaho', 'nwarwfyhah', 'tcwiujtnwm', 'oezrorarse', 'zggyzldbyz',
'bdhbayrvgn', 'ijzitpusks', 'ejgbydcpqd', 'sexskdwkth', 'pdzmpuznbf', 'usnvgtopvk', 'plwbhnoohu', 'lgwcxtezug', 'xjdbaopgsh', 'bnseavfbas',
}
for item in QUERY:
yield item in DB4
def _main():
with time_cost():
for _ in range(100_000):
list(func1())
with time_cost():
for _ in range(100_000):
list(func2())
with time_cost():
for _ in range(100_000):
list(func3())
with time_cost():
for _ in range(100_000):
list(func4())
# Results:
# time cost: 0:00:01.099247
# time cost: 0:00:01.112083
# time cost: 0:00:00.072557
# time cost: 0:00:00.167221
if __name__ == '__main__':
_main()
#!/usr/bin/env python
import time
from contextlib import contextmanager
from datetime import timedelta
@contextmanager
def time_cost():
begin = time.time()
try:
yield
finally:
print('time cost:', timedelta(seconds=time.time() - begin))
if __name__ == '__main__':
with time_cost():
sum(range(1000000))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment