} for base_idx, nr_points_base in enumerate(bases): print("Base number of points: %d" % nr_points_base) points_1 = np.random.rand(3, nr_points_base) points_2 = np.random.rand(3, nr_points_base) results = {} for algorithm in functions: if limits[algorithm] >= nr_points_base: print(" %s" % algorithm) # warm up functions[algorithm](points_2, points_1) # actual measurements start = Timer.current_time_millis() dists_12 = functions[algorithm](points_1, points_2) timings[algorithm][base_idx] = max(1, Timer.current_time_millis() - start) # cooldown functions[algorithm](points_1, points_2) # store the results results[algorithm] = dists_12 else: timings[algorithm][base_idx] = np.nan if len(results.keys()) > 1: for first_algorithm, second_algorithm in combinations(results.keys(), 2): first_result = results[first_algorithm] second_result = results[second_algorithm] diff_12 = (np.abs(first_result - second_result) / first_result).max() if diff_12 > 1e-5: