sh_cpl/unittests/unittests_query/performance_test_case.py

46 lines
1.4 KiB
Python
Raw Normal View History

2022-09-15 00:30:44 +02:00
import sys
import timeit
import unittest
from cpl_query.enumerable import Enumerable
from cpl_query.iterable import Iterable
2022-09-15 17:00:22 +02:00
VALUES = 10000
2022-09-15 12:48:05 +02:00
COUNT = 50
2022-09-15 00:30:44 +02:00
class PerformanceTestCase(unittest.TestCase):
def setUp(self):
i = 0
self.values = []
while i < VALUES:
self.values.append(i)
i += 1
2022-09-15 12:48:05 +02:00
def test_range(self):
default = timeit.timeit(lambda: list(self.values), number=COUNT)
enumerable = timeit.timeit(lambda: Enumerable(int, self.values), number=COUNT)
iterable = timeit.timeit(lambda: Iterable(int, self.values), number=COUNT)
2022-09-15 17:00:22 +02:00
print('Range')
2022-09-15 12:48:05 +02:00
print(f'd: {default}')
print(f'i: {iterable}')
print(f'e: {enumerable}')
self.assertLess(default, enumerable)
self.assertLess(default, iterable)
2022-09-15 00:30:44 +02:00
def test_where_single(self):
2022-09-15 12:48:05 +02:00
default = timeit.timeit(lambda: [x for x in list(self.values) if x == 50], number=COUNT)
iterable = timeit.timeit(lambda: Iterable(int, self.values).where(lambda x: x == 50).single(), number=COUNT)
enumerable = timeit.timeit(lambda: Enumerable(int, self.values).where(lambda x: x == 50).single(), number=COUNT)
2022-09-15 17:00:22 +02:00
print('Where single')
2022-09-15 12:48:05 +02:00
print(f'd: {default}')
print(f'i: {iterable}')
print(f'e: {enumerable}')
self.assertLess(default, enumerable)
self.assertLess(default, iterable)