from cpl.core.console import Console from cpl.core.utils.benchmark import Benchmark from cpl.query.enumerable import Enumerable from cpl.query.immutable_list import ImmutableList from cpl.query.list import List from cpl.query.set import Set def _default(): Console.write_line(Enumerable.empty().to_list()) Console.write_line(Enumerable.range(0, 100).length) Console.write_line(Enumerable.range(0, 100).to_list()) Console.write_line(Enumerable.range(0, 100).where(lambda x: x % 2 == 0).length) Console.write_line( Enumerable.range(0, 100).where(lambda x: x % 2 == 0).to_list().select(lambda x: str(x)).to_list() ) Console.write_line(List) s =Enumerable.range(0, 10).to_set() Console.write_line(s) s.add(1) Console.write_line(s) data = Enumerable( [ {"name": "Alice", "age": 30}, {"name": "Dave", "age": 35}, {"name": "Charlie", "age": 25}, {"name": "Bob", "age": 25}, ] ) Console.write_line(data.order_by(lambda x: x["age"]).to_list()) Console.write_line(data.order_by(lambda x: x["age"]).then_by(lambda x: x["name"]).to_list()) Console.write_line(data.order_by(lambda x: x["name"]).then_by(lambda x: x["age"]).to_list()) def t_benchmark(data: list): Benchmark.all("Enumerable", lambda: Enumerable(data).where(lambda x: x % 2 == 0).select(lambda x: x * 2).to_list()) Benchmark.all("Set", lambda: Set(data).where(lambda x: x % 2 == 0).select(lambda x: x * 2).to_list()) Benchmark.all("List", lambda: List(data).where(lambda x: x % 2 == 0).select(lambda x: x * 2).to_list()) Benchmark.all( "ImmutableList", lambda: ImmutableList(data).where(lambda x: x % 2 == 0).select(lambda x: x * 2).to_list() ) Benchmark.all("List comprehension", lambda: [x * 2 for x in data if x % 2 == 0]) def main(): N = 10_000_000 data = list(range(N)) #t_benchmark(data) Console.write_line() _default() if __name__ == "__main__": main()