Skip to content
This repository has been archived by the owner on Jan 19, 2020. It is now read-only.

Commit

Permalink
clean up and add benchmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
jfredett committed Dec 22, 2017
1 parent 390801e commit 642557a
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 11 deletions.
106 changes: 98 additions & 8 deletions src/lib.rs
Expand Up @@ -383,7 +383,7 @@ impl<N : Unsigned> ops::BitAnd for Bitboard<N> {
// we know the sizes are the same because `N` is the same, and `A` is the same
for amt in 0..(Self::size() as isize) {
unsafe {
*new_bb.ptr.offset(amt) = (*self.ptr.offset(amt)) & (*other.ptr.offset(amt))
*new_bb.ptr.offset(amt) = (*self.ptr.offset(amt)) & (*other.ptr.offset(amt))
}
}
return new_bb
Expand Down Expand Up @@ -879,7 +879,7 @@ mod benches {


#[bench]
fn intersection_large(b: &mut Bencher) {
fn large(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_go_board());
let bb2 = &test::black_box(prepped_go_board());
b.iter(|| {
Expand All @@ -888,7 +888,7 @@ mod benches {
}

#[bench]
fn intersection_medium(b: &mut Bencher) {
fn medium(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_chess_board());
let bb2 = &test::black_box(prepped_chess_board());
b.iter(|| {
Expand All @@ -897,7 +897,7 @@ mod benches {
}

#[bench]
fn intersection_small(b: &mut Bencher) {
fn small(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_ttt_board());
let bb2 = &test::black_box(prepped_ttt_board());
b.iter(|| {
Expand All @@ -906,12 +906,73 @@ mod benches {
}
}

mod bitand {
mod bitxor {
use super::*;

#[bench]
fn large(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_go_board());
let bb2 = &test::black_box(prepped_go_board());
b.iter(|| {
bb1.to_owned() ^ bb2.to_owned()
});
}

#[bench]
fn intersection_large(b: &mut Bencher) {
fn medium(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_chess_board());
let bb2 = &test::black_box(prepped_chess_board());
b.iter(|| {
bb1.to_owned() ^ bb2.to_owned()
});
}

#[bench]
fn small(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_ttt_board());
let bb2 = &test::black_box(prepped_ttt_board());
b.iter(|| {
bb1.to_owned() ^ bb2.to_owned()
});
}
}

mod bitor {
use super::*;

#[bench]
fn large(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_go_board());
let bb2 = &test::black_box(prepped_go_board());
b.iter(|| {
bb1.to_owned() | bb2.to_owned()
});
}

#[bench]
fn medium(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_chess_board());
let bb2 = &test::black_box(prepped_chess_board());
b.iter(|| {
bb1.to_owned() | bb2.to_owned()
});
}

#[bench]
fn small(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_ttt_board());
let bb2 = &test::black_box(prepped_ttt_board());
b.iter(|| {
bb1.to_owned() | bb2.to_owned()
});
}
}

mod bitand {
use super::*;

#[bench]
fn large(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_go_board());
let bb2 = &test::black_box(prepped_go_board());
b.iter(|| {
Expand All @@ -920,7 +981,7 @@ mod benches {
}

#[bench]
fn intersection_medium(b: &mut Bencher) {
fn medium(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_chess_board());
let bb2 = &test::black_box(prepped_chess_board());
b.iter(|| {
Expand All @@ -929,13 +990,42 @@ mod benches {
}

#[bench]
fn intersection_small(b: &mut Bencher) {
fn small(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_ttt_board());
let bb2 = &test::black_box(prepped_ttt_board());
b.iter(|| {
bb1.to_owned() & bb2.to_owned()
});
}
}

mod clone {
use super::*;

#[bench]
fn large(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_go_board());
b.iter(|| {
bb1.clone()
});
}

#[bench]
fn medium(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_chess_board());
b.iter(|| {
bb1.clone()
});
}

#[bench]
fn small(b: &mut Bencher) {
let bb1 = &test::black_box(prepped_ttt_board());
b.iter(|| {
bb1.clone()
});
}
}

}

6 changes: 3 additions & 3 deletions tests/valgrind_test.rs
Expand Up @@ -14,14 +14,14 @@ static A: System = System;
use bitboard::Bitboard;
use typenum::consts::*;


// TODO: need a suite of tests in here that illustrate normal use, for valgrinding purposes.

mod memory_allocation {
use super::*;

#[test]
fn alloc() {
let bb = Bitboard::<U20>::new();
for byte in bb {
assert_eq!(byte, 0);
}
}
}

0 comments on commit 642557a

Please sign in to comment.