syren 0.6.0

A parallel Rust framework for agent-based models with ECS storage, scheduling, messaging, environments, and optional GPU execution.
Documentation
use criterion::*;
use std::hint::black_box;

use syren::Scheduler;

mod gpu_common;
use gpu_common::*;

fn gpu_dispatch_hot_benchmark(c: &mut Criterion) {
    let (registry, energy_id) = make_registry();

    let ecs = make_world(4, registry);
    populate_energy(&ecs, AGENTS, energy_id).unwrap();

    let mut scheduler = Scheduler::new();
    scheduler.add_system(EnergyDecayGpu::new(1, energy_id));

    ecs.run(&mut scheduler).unwrap();

    c.bench_function("gpu_hot_tick_1M", |b| {
        b.iter(|| {
            ecs.run(&mut scheduler).unwrap();
            black_box(&ecs);
        });
    });
}

criterion_group!(benches, gpu_dispatch_hot_benchmark);
criterion_main!(benches);