Skip to content

Commit dfe7ee5

Browse files
Merge pull request #148 from elichai/2019-08-travis
Optimizing travis build time and fixing benchmarks
2 parents 288cc1e + 16fc4ee commit dfe7ee5

File tree

2 files changed

+44
-20
lines changed

2 files changed

+44
-20
lines changed

.travis.yml

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
language: rust
2-
cache: cargo
2+
cache:
3+
directories:
4+
- cargo_web
35

46
rust:
57
- stable
@@ -10,31 +12,34 @@ os:
1012
- linux
1113
- windows
1214

15+
addons:
16+
chrome: stable
17+
1318
matrix:
14-
# rand 0.6 actually needs Rust 1.22, which leads to build failures on Rust 1.14 on Windows.
15-
# This is a problem, because
16-
# - we insist on rust 1.22 since #92
17-
# - but "rand" is only an optional dependency.
1819
exclude:
1920
- rust: 1.22.0
2021
os: windows
2122

2223
script:
23-
- cargo build --verbose --features=fuzztarget
24-
- cargo build --verbose --features=rand
25-
- cargo test --verbose --features=rand
26-
- cargo test --verbose --features="rand serde"
27-
- cargo test --verbose --features="rand serde recovery endomorphism"
2824
- cargo build --verbose --no-default-features
2925
- cargo build --verbose --no-default-features --features="serde"
26+
- cargo build --verbose --no-default-features --features="lowmemory"
3027
- cargo build --verbose --no-default-features --features="rand"
3128
- cargo build --verbose --no-default-features --features="rand serde recovery endomorphism"
3229
- cargo build --verbose --no-default-features --features="fuzztarget recovery"
33-
- cargo build --verbose --no-default-features --features="lowmemory"
30+
- cargo build --verbose --features=fuzztarget
31+
- cargo build --verbose --features=rand
32+
- cargo test --verbose --features=rand
33+
- cargo test --verbose --features="rand serde"
34+
- cargo test --verbose --features="rand serde recovery endomorphism"
3435
- cargo build --verbose
3536
- cargo test --verbose
36-
- cargo build --release
37-
- cargo test --release
38-
- cargo bench
39-
- if [ "$(rustup show | grep default | grep stable)" != "" ]; then cargo doc; fi
40-
- if [ "$(rustup show | grep default | grep stable)" != "" -a "$TRAVIS_OS_NAME" = "linux" ]; then cargo install --force cargo-web && cargo web build --target=asmjs-unknown-emscripten && cargo web test --target=asmjs-unknown-emscripten --nodejs; fi
37+
- cargo build --verbose --release
38+
- cargo test --verbose --release
39+
- if [ ${TRAVIS_RUST_VERSION} == "stable" ]; then cargo doc --verbose --features="rand,serde,recovery,endomorphism"; fi
40+
- if [ ${TRAVIS_RUST_VERSION} == "nightly" ]; then cargo test --verbose --benches --features=unstable; fi
41+
- if [ ${TRAVIS_RUST_VERSION} == "stable" -a "$TRAVIS_OS_NAME" = "linux" ]; then
42+
CARGO_TARGET_DIR=cargo_web cargo install --verbose --force cargo-web &&
43+
cargo web build --verbose --target=asmjs-unknown-emscripten &&
44+
cargo web test --verbose --target=asmjs-unknown-emscripten;
45+
fi

src/lib.rs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -999,18 +999,37 @@ mod tests {
999999

10001000
#[cfg(all(test, feature = "unstable"))]
10011001
mod benches {
1002-
use rand::{Rng, thread_rng};
1002+
use rand::{thread_rng, RngCore};
10031003
use test::{Bencher, black_box};
10041004

10051005
use super::{Secp256k1, Message};
10061006

10071007
#[bench]
10081008
pub fn generate(bh: &mut Bencher) {
1009-
struct CounterRng(u32);
1010-
impl Rng for CounterRng {
1011-
fn next_u32(&mut self) -> u32 { self.0 += 1; self.0 }
1009+
struct CounterRng(u64);
1010+
impl RngCore for CounterRng {
1011+
fn next_u32(&mut self) -> u32 {
1012+
self.next_u64() as u32
1013+
}
1014+
1015+
fn next_u64(&mut self) -> u64 {
1016+
self.0 += 1;
1017+
self.0
1018+
}
1019+
1020+
fn fill_bytes(&mut self, dest: &mut [u8]) {
1021+
for chunk in dest.chunks_mut(64/8) {
1022+
let rand: [u8; 64/8] = unsafe {std::mem::transmute(self.next_u64())};
1023+
chunk.copy_from_slice(&rand[..chunk.len()]);
1024+
}
1025+
}
1026+
1027+
fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand::Error> {
1028+
Ok(self.fill_bytes(dest))
1029+
}
10121030
}
10131031

1032+
10141033
let s = Secp256k1::new();
10151034
let mut r = CounterRng(0);
10161035
bh.iter( || {

0 commit comments

Comments
 (0)