from math import sin, cos, sqrt from time import time POINTS = 10000000 class Point: x: float y: float z: float def __init__(self, i): self.x = x = sin(i) self.y = cos(i) * 3 self.z = (x * x) / 2 def __repr__(self): return f"" def normalize(self): x = self.x y = self.y z = self.z norm = sqrt(x * x + y * y + z * z) self.x /= norm self.y /= norm self.z /= norm def maximize(self, other): self.x = self.x if self.x > other.x else other.x self.y = self.y if self.y > other.y else other.y self.z = self.z if self.z > other.z else other.z return self def maximize(points): next = points[0] for p in points[1:]: next = next.maximize(p) return next def benchmark(n): points = [None] * n for i in range(n): points[i] = Point(i) for p in points: p.normalize() return maximize(points) t0 = time() print(benchmark(POINTS)) t1 = time() print(t1 - t0)