defl/tests/speed/test_list.py

94 lines
2.2 KiB
Python
Raw Normal View History

2025-04-28 14:44:03 -04:00
#!/usr/bin/env python
from collections import Counter
import sys, re, os, enum, itertools, timeit
from functools import partial, partialmethod
from time import sleep
from dataclasses import dataclass, field
from operator import itemgetter
from defl import log, cl, Dath, Time, Run, sp, ShQu
from defl._typing_ import *
from defl._typing_ import T, F, N, U
from defl._rich_ import *
from defl._pydantic_ import *
import defl
number = 500_000
repeat = 5
# == loop
def test_loop_comprehension():
code = [
'output = []',
'lst1= [1, 3, 5, 7, 9, 11]',
'lst2=[2, 4, 6, 8, 10, 12]',
'output = [(a, b) for a in lst1 for b in lst2]',
]
code = '\n'.join(code)
res = timeit.repeat(code, number=number, repeat=repeat)
res = sum(res) / len(res)
print(res)
def test_loop_forLoop():
code = [
'output = []',
'lst1= [1, 3, 5, 7, 9, 11]',
'lst2=[2, 4, 6, 8, 10, 12]',
'for a in lst1:',
' for b in lst2:',
' output.extend((a, b))',
]
code = '\n'.join(code)
res = timeit.repeat(code, number=number, repeat=repeat)
res = sum(res) / len(res)
print(res)
# == concatinate
def test_createList_declare():
code = [
'output = [1,2,4,5,6,7,8,9]',
]
code = '\n'.join(code)
res = timeit.repeat(code, number=number, repeat=repeat)
res = sum(res) / len(res)
print(res)
def test_createList_concatinate():
code = [
'output = [1,2] + [4,5] + [6,7] + [8,9]',
]
code = '\n'.join(code)
res = timeit.repeat(code, number=number, repeat=repeat)
res = sum(res) / len(res)
print(res)
def test_createList_unpack():
code = [
'output = [*[1,2], *[4,5], *[6,7], *[8,9]]',
]
code = '\n'.join(code)
res = timeit.repeat(code, number=number, repeat=repeat)
res = sum(res) / len(res)
print(res)
def test_createList_extend():
code = [
'output = []',
'output.extend([1,2])',
'output.extend([4,5])',
'output.extend([6,7])',
'output.extend([8,9])',
]
code = '\n'.join(code)
res = timeit.repeat(code, number=number, repeat=repeat)
res = sum(res) / len(res)
print(res)