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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| # -*- coding: utf-8 -*-
# Python 2 & 3
import random # Generate pseudo-random numbers
import timeit # Measure execution time of small code snippets
def filtered_list_method1(size_list, random_range): # {
my_list = list()
for i in range(size_list):
number = random.randint(0, random_range - 1)
if number not in my_list:
my_list.append(number)
return my_list
# }
def filtered_list_method2(size_list, random_range): # {
my_list = list()
for i in range(size_list):
my_list.append(random.randint(0, random_range - 1))
return set(my_list)
# }
def filtered_list_method3(size_list, random_range): # {
my_list = [random.randint(0, random_range - 1) for i in range(size_list)]
return set(my_list)
# }
def filtered_gen_method1(size_list, random_range): # {
def generate_randint(size_list, random_range): #*{
for i in range(size_list):
yield random.randint(0, random_range - 1)
# }
my_gen = generate_randint(size_list, random_range)
return set(my_gen)
# }
def filtered_gen_method2(size_list, random_range): # {
my_gen = (random.randint(0, random_range - 1) for i in range(size_list))
return set(my_gen)
# }
def set_method1(size_list, random_range): # {
my_set = set()
for i in range(size_list):
my_set.add(random.randint(0, random_range - 1))
return my_set
# }
def set_method2(size_list, random_range): # {
my_set = {random.randint(0, random_range - 1) for i in range(size_list)}
return my_set
# }
if __name__ == '__main__': # {
size_list = int(1e3)
random_range = size_list // 10
print("Random range: {}, Size list: {}\n".format(random_range, size_list))
timeit_nb_execution = int(1e3)
for function in (
filtered_list_method1,
filtered_list_method2,
filtered_gen_method1,
filtered_gen_method2,
set_method1,
set_method2,
): # {
total_duration = timeit.timeit(
"{}(size_list, random_range)".format(function.__name__),
"from __main__ import {}, size_list, random_range".format(function.__name__),
number=timeit_nb_execution
)
print("\n\t".join([
"{} execution time:".format(function.__name__),
"Total ({} times): {:.03f} s".format(timeit_nb_execution, total_duration),
"Average: {:.03f} ms".format(total_duration / timeit_nb_execution * 1e3),
]) + "\n")
# } for
# } __main__ |
Partager