def METHOD_NAME(observations, model, may_parallelise, blas):
  time = timeit.default_timer
  ls = least_squares.crystallographic_ls(
    observations, model, non_linear_ls_engine[blas], may_parallelise,
    weighting_scheme=least_squares.mainstream_shelx_weighting(a=0))
  m = ls.observations.fo_sq.size()
  n = ls.reparametrisation.n_independents
  # let's do worth of 5 Gflops at least
  n_trials = max(int(5e9/(0.5*m*n**2)), 1)
  building = 0
  solving = 0
  for i in range(n_trials):
    t0 = time()
    ls.build_up()
    t1 = time()
    rls = ls.reduced_problem()
    neqns = rls.step_equations()
    neqns.solve()
    t2 = time()
    building += t1 - t0
    solving += t2 - t1
  return (ls.observations.fo_sq.d_min(), len(ls.xray_structure.scatterers()),
         building/n_trials, solving/n_trials)