#!/usr/bin/env python3

import time           # time in seconds
import numpy as np    # NumPy

NN = int(1e7)         # summing NN squares

#
# --- plain Python implementation
#
start_time = time.time()
result_plain = sum([i**2 for i in range(1, NN+1)])
end_time = time.time()

print(f"plain python, result: {result_plain:20.12e}")
print(f"plain python, time  : {end_time - start_time:7.3f}  seconds")
print()

#
# --- NumPy implementation
#
start_time = time.time()
result_numPy = \
  np.sum(np.arange(1, NN+1, dtype=np.float64)**2, dtype=np.float64)
end_time = time.time()

print(f"NumPy,        result: {result_numPy:20.12e}")
print(f"NumPy,        time  : {end_time - start_time:7.3f}  seconds")
