Source code for bw2calc.speed_test
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
from eight import *
import numpy as np
from scipy.sparse.linalg import spsolve
from scipy.sparse import coo_matrix
from time import time
[docs]
class SpeedTest(object):
"""Compare speed of sparse matrix operations on this machine compared to a reference machine."""
[docs]
def test(self):
sm = self.get_sparse_matrix()
v = self.get_demand_vector()
now = time()
for x in range(100):
spsolve(sm, v)
return time() - now
[docs]
def ratio(self):
"""On the reference machine, this takes about 5.85 seconds"""
return 5.85 / self.test()
[docs]
def get_sparse_matrix(self):
"""Adapted from scipy to use seeded RNG"""
self.size = 1000
k = long(self.density * self.size ** 2)
rng = np.random.RandomState(self.seed)
i = rng.randint(self.size, size=k)
j = rng.randint(self.size, size=k)
data = rng.rand(k)
return coo_matrix((data, (i, j)), shape=(self.size, self.size)).tocsr()
[docs]
def get_demand_vector(self):
v = np.zeros((self.size,))
v[42] = 1
return v