mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-05 02:39:10 +02:00
This update makes wgpu a vendored dependency instead of having it in gfx/wgpu. ## Notes It relies on https://phabricator.services.mozilla.com/D123157 It has a quirk related to OpenGL ES backend. Previousy, we manually had to disable GL backend in order to avoid vendoring WASM dependencies in. This time, manual editing is more complicated, so instead this change adds a few cargo patch lines to point WASM dependencies to dummy projects. The update also totally removes SPIRV-Cross, since the latest `wgpu` doesn't depend on it any more. The compiled binary size for Gecko should improve with this. Differential Revision: https://phabricator.services.mozilla.com/D123153
78 lines
1.7 KiB
Rust
78 lines
1.7 KiB
Rust
|
|
extern crate arrayvec;
|
|
#[macro_use] extern crate bencher;
|
|
|
|
use std::io::Write;
|
|
|
|
use arrayvec::ArrayVec;
|
|
|
|
use bencher::Bencher;
|
|
use bencher::black_box;
|
|
|
|
fn extend_with_constant(b: &mut Bencher) {
|
|
let mut v = ArrayVec::<u8, 512>::new();
|
|
let cap = v.capacity();
|
|
b.iter(|| {
|
|
v.clear();
|
|
let constant = black_box(1);
|
|
v.extend((0..cap).map(move |_| constant));
|
|
v[511]
|
|
});
|
|
b.bytes = v.capacity() as u64;
|
|
}
|
|
|
|
fn extend_with_range(b: &mut Bencher) {
|
|
let mut v = ArrayVec::<u8, 512>::new();
|
|
let cap = v.capacity();
|
|
b.iter(|| {
|
|
v.clear();
|
|
let range = 0..cap;
|
|
v.extend(range.map(|x| black_box(x as _)));
|
|
v[511]
|
|
});
|
|
b.bytes = v.capacity() as u64;
|
|
}
|
|
|
|
fn extend_with_slice(b: &mut Bencher) {
|
|
let mut v = ArrayVec::<u8, 512>::new();
|
|
let data = [1; 512];
|
|
b.iter(|| {
|
|
v.clear();
|
|
let iter = data.iter().map(|&x| x);
|
|
v.extend(iter);
|
|
v[511]
|
|
});
|
|
b.bytes = v.capacity() as u64;
|
|
}
|
|
|
|
fn extend_with_write(b: &mut Bencher) {
|
|
let mut v = ArrayVec::<u8, 512>::new();
|
|
let data = [1; 512];
|
|
b.iter(|| {
|
|
v.clear();
|
|
v.write(&data[..]).ok();
|
|
v[511]
|
|
});
|
|
b.bytes = v.capacity() as u64;
|
|
}
|
|
|
|
fn extend_from_slice(b: &mut Bencher) {
|
|
let mut v = ArrayVec::<u8, 512>::new();
|
|
let data = [1; 512];
|
|
b.iter(|| {
|
|
v.clear();
|
|
v.try_extend_from_slice(&data).ok();
|
|
v[511]
|
|
});
|
|
b.bytes = v.capacity() as u64;
|
|
}
|
|
|
|
benchmark_group!(benches,
|
|
extend_with_constant,
|
|
extend_with_range,
|
|
extend_with_slice,
|
|
extend_with_write,
|
|
extend_from_slice
|
|
);
|
|
|
|
benchmark_main!(benches);
|