def METHOD_NAME(N, duration=1,
                do_refractory=False, exact_method=False, do_monitor=False, do_synapses=False,
                **ignored_opts):
    global halftime
    import time
    results = dict()
    start_time = time.time()
    from brian import *
    finished_importing_brian_time = time.time()
    results['import_brian'] = finished_importing_brian_time-start_time
    duration *= second
    Ne = int(0.8*N)
    Ni = N-Ne
    taum = 20 * ms
    taue = 5 * ms
    taui = 10 * ms
    Vt = -50 * mV
    Vr = -60 * mV
    El = -49 * mV
    eqs = '''
    dv/dt  = (ge+gi-(v-El))/taum : volt
    dge/dt = -ge/taue : volt
    dgi/dt = -gi/taui : volt
    '''
    kwds = {}
    if do_refractory:
        kwds['refractory'] = 5*ms
    if not exact_method:
        kwds['method'] = 'Euler'
    P = NeuronGroup(N, model=eqs, threshold=Vt, reset=Vr, **kwds)
    P.v = Vr
    P.ge = 0 * mV
    P.gi = 0 * mV
    Pe = P.subgroup(Ne)
    Pi = P.subgroup(Ni)
    we = (60 * 0.27 / 10) * mV # excitatory synaptic weight (voltage)
    wi = (-20 * 4.5 / 10) * mV # inhibitory synaptic weight
    p = min(80./N, 1)
    if do_synapses:
        Ce = Connection(Pe, P, 'ge', weight=we, sparseness=p)
        Ci = Connection(Pi, P, 'gi', weight=wi, sparseness=p)
    P.v = Vr + rand(len(P)) * (Vt - Vr)
    if do_monitor:
        M = SpikeMonitor(P)
    netop_halfway_timer = network_operation(clock=EventClock(dt=duration*0.51))(halfway_timer)
    objects_created_time = time.time()
    results['object_creation'] = objects_created_time-finished_importing_brian_time
    run(1 * msecond)
    initial_run_time = time.time()
    results['initial_run'] = initial_run_time-objects_created_time
    run(duration)
    main_run_time = time.time()
    results['main_run'] = main_run_time-initial_run_time
    results['second_half_main_run'] = main_run_time-halftime
    results['total'] = main_run_time-start_time
    return results