code: def test_harch_performance(self):
      harch_setup = """
  parameters = np.array([.1, .4, .3, .2])
  lags = np.array([1, 5, 22], dtype=np.int32)
          """
  
      harch_first = """
  recpy.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast,
  var_bounds)
          """
  
      harch_second = """
  rec.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, var_bounds)
          """
  
      timer = Timer(
          harch_first,
          "Numba",
          harch_second,
          "Cython",
          "HARCH",
          self.timer_setup + harch_setup,
      )
      timer.display()
      assert timer.ratio < 10.0
      if not (MISSING_NUMBA or CYTHON_COVERAGE):
          assert 0.1 < timer.ratio
  
imports: import os
  import pickle
  import timeit
  import types
  import numpy
  from numpy.random import RandomState
  from numpy.testing import assert_allclose, assert_almost_equal
  import pytest
  from scipy.special import gamma
  import arch.univariate.recursions_python
  from arch.univariate.volatility import RiskMetrics2006
label_desc: Use image node_id 20 for calling the TestRecursions obj's underlying member method code with example usage: obj.test_harch_performance() without return types