ci: wire up CI, fix no_std build, fix stale package names in scripts
CI / test (push) Failing after 15s
CI / test (push) Failing after 15s
- Add .gitea/workflows/ci.yml running scripts/ci-test.sh (fmt, clippy,
test, no_std check) on push/PR to main.
- Fix stale rustyhdf5-py/rustyhdf5-format package names in
ci-test.sh/check-nostd.sh, which had been silently no-op'ing those
checks (cargo warns but doesn't fail on an unknown --exclude/-p
target).
- With those checks actually running, fix the real issues they surface:
- clippy: useless_conversion in chunked_write.rs, byte_char_slices in
global_heap.rs/object_header.rs.
- cargo fmt: apply formatting across the workspace (whitespace only).
- no_std (thumbv7em-none-eabihf) build errors in clawhdf5-format:
core::sync::atomic::AtomicU64 doesn't exist on that target (no
native 64-bit atomics) — switch profiling.rs's counters to
portable-atomic, which falls back to a CAS-based emulation there
and is a no-op wrapper elsewhere. Add missing alloc imports for
Box (filters.rs), Vec (filters_szip.rs), and format! (dict_encoding.rs)
on no_std paths. Replace f64::powi (std/libm-only) with a small
local exponentiation-by-squaring helper in the scale-offset filter.
This commit is contained in:
@@ -74,11 +74,7 @@ fn bench_read_sequential(c: &mut Criterion) {
|
||||
let data: Vec<f32> = (0..nn).map(|i| i as f32 * 0.001).collect();
|
||||
{
|
||||
let lf = hdf5::File::create(&path).unwrap();
|
||||
let lds = lf
|
||||
.new_dataset::<f32>()
|
||||
.shape([nn])
|
||||
.create("data")
|
||||
.unwrap();
|
||||
let lds = lf.new_dataset::<f32>().shape([nn]).create("data").unwrap();
|
||||
lds.write(data.as_slice()).unwrap();
|
||||
}
|
||||
b.iter(|| {
|
||||
@@ -235,19 +231,23 @@ fn bench_read_zerocopy_mmap(c: &mut Criterion) {
|
||||
|
||||
group.throughput(Throughput::Bytes((n * size_of::<f64>()) as u64));
|
||||
|
||||
group.bench_with_input(BenchmarkId::new("clawhdf5_mmap_zerocopy", n), &path, |b, p| {
|
||||
b.iter(|| {
|
||||
let file = MmapFile::open(p).unwrap();
|
||||
let ds = file.dataset("data").unwrap();
|
||||
let slice = ds.read_f64_zerocopy().unwrap();
|
||||
// Sum every element to force the mapped pages to actually be
|
||||
// faulted in — returning just `.len()` would measure nothing
|
||||
// but the mmap() syscall, repeating the exact "too-fast-to-
|
||||
// be-real" mistake this benchmark exists to fix.
|
||||
let sum: f64 = slice.map(|s| s.iter().sum()).unwrap_or(0.0);
|
||||
criterion::black_box(sum)
|
||||
});
|
||||
});
|
||||
group.bench_with_input(
|
||||
BenchmarkId::new("clawhdf5_mmap_zerocopy", n),
|
||||
&path,
|
||||
|b, p| {
|
||||
b.iter(|| {
|
||||
let file = MmapFile::open(p).unwrap();
|
||||
let ds = file.dataset("data").unwrap();
|
||||
let slice = ds.read_f64_zerocopy().unwrap();
|
||||
// Sum every element to force the mapped pages to actually be
|
||||
// faulted in — returning just `.len()` would measure nothing
|
||||
// but the mmap() syscall, repeating the exact "too-fast-to-
|
||||
// be-real" mistake this benchmark exists to fix.
|
||||
let sum: f64 = slice.map(|s| s.iter().sum()).unwrap_or(0.0);
|
||||
criterion::black_box(sum)
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
group.bench_with_input(BenchmarkId::new("clawhdf5_copy", n), &path, |b, p| {
|
||||
b.iter(|| {
|
||||
|
||||
Reference in New Issue
Block a user