Benchmarking your code


In [5]:
def fun():
    max(range(1000))

In [10]:
%%timeit
fun()


10000 loops, best of 3: 27.8 µs per loop

In [7]:
%%time
fun()


CPU times: user 44 µs, sys: 1 µs, total: 45 µs
Wall time: 47 µs

Exercises

  1. What is the fastest way to download 100 pages from index.hu?
  2. How to calculate the factors of 1000 random integers effectively using factorize_naive function below?

In [28]:
import requests
def get_page(url): 
    response = requests.request(url=url, method="GET")
    return response
get_page("http://index.hu")


Out[28]:
<Response [200]>

In [12]:
def factorize_naive(n):
    """ A naive factorization method. Take integer 'n', return list of
        factors.
    """
    if n < 2:
        return []
    factors = []
    p = 2

    while True:
        if n == 1:
            return factors

        r = n % p
        if r == 0:
            factors.append(p)
            n = n // p
        elif p * p >= n:
            factors.append(n)
            return factors
        elif p > 2:
            # Advance in steps of 2 over odd numbers
            p += 2
        else:
            # If p == 2, get to 3
            p += 1
    assert False, "unreachable"

In [ ]: