fix: change where TaskHandle is borrowed to prevent repeat output fetches

This commit is contained in:
TechnoPorg committed 2026-02-20 19:00:18 +01:00
1 parent c8efb00175
commit 9fbe4c2fd8
47 files changed
+323 -513

No files matched your search

+3 -3
View File
@@ -20,19 +20,19 @@ pub fn bench_deep_chain(c: &mut Criterion) {
let first = dag.add_task(task_fn::<(), _, _>(|_: ()| 0));
let mut prev = dag
.add_task(task_fn::<i32, _, _>(|&x: &i32| x + 1))
.depends_on(first);
.depends_on(&first);
for i in 2..100 {
prev = dag
.add_task(task_fn::<i32, _, _>(move |&x: &i32| x + i))
.depends_on(prev);
.depends_on(&prev);
}
let mut output = dag
.run(|fut| async move { tokio::spawn(fut).await.unwrap() })
.await
.unwrap();
output.get(prev).unwrap()
output.get(prev)
})
});
});
+4 -4
View File
@@ -20,19 +20,19 @@ pub fn bench_diamond_pattern(c: &mut Criterion) {
let a = dag.add_task(task_fn::<(), _, _>(|_: ()| 10));
let b = dag
.add_task(task_fn::<i32, _, _>(|&x: &i32| x * 2))
.depends_on(a);
.depends_on(&a);
let c = dag
.add_task(task_fn::<i32, _, _>(|&x: &i32| x + 5))
.depends_on(a);
.depends_on(&a);
let d = dag
.add_task(task_fn::<(i32, i32), _, _>(|(x, y): (&i32, &i32)| x + y))
.depends_on((b, c));
.depends_on((&b, &c));
let mut output = dag
.run(|fut| async move { tokio::spawn(fut).await.unwrap() })
.await
.unwrap();
output.get(d).unwrap()
output.get(d)
})
});
});
+7 -7
View File
@@ -27,19 +27,19 @@ pub fn bench_etl_pipeline(c: &mut Criterion) {
.add_task(task_fn::<Vec<_>, _, _>(|data: &Vec<i32>| {
data.iter().map(|x| x * 2).collect::<Vec<_>>()
}))
.depends_on(source1);
.depends_on(&source1);
let transform2 = dag
.add_task(task_fn::<Vec<_>, _, _>(|data: &Vec<i32>| {
data.iter().map(|x| x * 2).collect::<Vec<_>>()
}))
.depends_on(source2);
.depends_on(&source2);
let transform3 = dag
.add_task(task_fn::<Vec<_>, _, _>(|data: &Vec<i32>| {
data.iter().map(|x| x * 2).collect::<Vec<_>>()
}))
.depends_on(source3);
.depends_on(&source3);
// Merge all transformed data
let merge = dag
@@ -51,7 +51,7 @@ pub fn bench_etl_pipeline(c: &mut Criterion) {
result
},
))
.depends_on((transform1, transform2, transform3));
.depends_on((&transform1, &transform2, &transform3));
// Validate
let validate = dag
@@ -61,20 +61,20 @@ pub fn bench_etl_pipeline(c: &mut Criterion) {
.filter(|&x| x > 0)
.collect::<Vec<i32>>()
}))
.depends_on(merge);
.depends_on(&merge);
// Load (compute sum)
let load = dag
.add_task(task_fn::<Vec<_>, _, _>(|data: &Vec<i32>| {
data.iter().sum::<i32>()
}))
.depends_on(validate);
.depends_on(&validate);
let mut output = dag
.run(|fut| async move { tokio::spawn(fut).await.unwrap() })
.await
.unwrap();
output.get(load).unwrap()
output.get(load)
})
});
});
+5 -5
View File
@@ -20,22 +20,22 @@ pub fn bench_linear_pipeline(c: &mut Criterion) {
let a = dag.add_task(task_fn::<(), _, _>(|_: ()| 1));
let b = dag
.add_task(task_fn::<i32, _, _>(|&x: &i32| x + 1))
.depends_on(a);
.depends_on(&a);
let c = dag
.add_task(task_fn::<i32, _, _>(|&x: &i32| x * 2))
.depends_on(b);
.depends_on(&b);
let d = dag
.add_task(task_fn::<i32, _, _>(|&x: &i32| x - 1))
.depends_on(c);
.depends_on(&c);
let e = dag
.add_task(task_fn::<i32, _, _>(|&x: &i32| x * 3))
.depends_on(d);
.depends_on(&d);
let mut output = dag
.run(|fut| async move { tokio::spawn(fut).await.unwrap() })
.await
.unwrap();
output.get(e).unwrap()
output.get(e)
})
});
});
+1 -1
View File
@@ -21,7 +21,7 @@ pub fn bench_wide_fanout(c: &mut Criterion) {
// Create 100 tasks that all depend on source
for i in 0..100 {
dag.add_task(task_fn::<i32, _, _>(move |&x: &i32| x + i))
.depends_on(source);
.depends_on(&source);
}
let _output = dag