text: # first line: 312
  @ignore_warnings(category=ConvergenceWarning)
  # use joblib to cache the results.
  # X_shape is specified in arguments for avoiding hashing X
  @mem.cache(ignore=['X', 'W0', 'H0'])
  def bench_one(name, X, W0, H0, X_shape, clf_type, clf_params, init,
                n_components, random_state):
      W = W0.copy()
      H = H0.copy()
  
      clf = clf_type(**clf_params)
      st = time()
      W = clf.fit_transform(X, W=W, H=H)
      end = time()
      H = clf.components_
  
      this_loss = _beta_divergence(X, W, H, 2.0, True)
      duration = end - st
      return this_loss, duration
  