#![forbid(bad_style, exceeding_bitshifts, mutable_transmutes, no_mangle_const_items,
unknown_crate_types, warnings)]
#![deny(deprecated, drop_with_repr_extern, improper_ctypes, missing_docs,
non_shorthand_field_patterns, overflowing_literals, plugin_as_library,
private_no_mangle_fns, private_no_mangle_statics, stable_features, unconditional_recursion,
unknown_lints, unsafe_code, unused, unused_allocation, unused_attributes,
unused_comparisons, unused_features, unused_parens, while_true)]
#![warn(trivial_casts, trivial_numeric_casts, unused_extern_crates, unused_import_braces,
unused_qualifications, unused_results, variant_size_differences)]
#![allow(box_pointers, fat_ptr_transmutes, missing_copy_implementations,
missing_debug_implementations)]
#![feature(test)]
#[macro_use]
#[allow(unused_extern_crates)] extern crate maidsafe_utilities;
extern crate self_encryption;
extern crate test;
use test::Bencher;
use self_encryption::{DataMap, SelfEncryptor};
use self_encryption::test_helpers::{random_bytes, SimpleStorage};
use std::sync::Arc;
#[bench]
fn write_then_read_200_bytes(b: &mut Bencher) {
let my_storage = Arc::new(SimpleStorage::new());
let bytes_len = 200;
b.iter(|| {
let data_map: DataMap;
let the_bytes = random_bytes(bytes_len as usize);
{
let mut se = SelfEncryptor::new(my_storage.clone(), DataMap::None);
se.write(&the_bytes, 0);
data_map = se.close();
}
let mut new_se = SelfEncryptor::new(my_storage.clone(), data_map);
let fetched = new_se.read(0, bytes_len);
assert_eq!(fetched, the_bytes);
});
b.bytes = 2 * bytes_len;
}
#[bench]
fn write_then_read_1_kilobyte(b: &mut Bencher) {
let my_storage = Arc::new(SimpleStorage::new());
let bytes_len = 1024;
b.iter(|| {
let data_map: DataMap;
let the_bytes = random_bytes(bytes_len as usize);
{
let mut se = SelfEncryptor::new(my_storage.clone(), DataMap::None);
se.write(&the_bytes, 0);
data_map = se.close();
}
let mut new_se = SelfEncryptor::new(my_storage.clone(), data_map);
let fetched = new_se.read(0, bytes_len);
assert_eq!(fetched, the_bytes);
});
b.bytes = 2 * bytes_len;
}
#[bench]
fn write_then_read_1_megabyte(b: &mut Bencher) {
let my_storage = Arc::new(SimpleStorage::new());
let bytes_len = 1024 * 1024;
b.iter(|| {
let data_map: DataMap;
let the_bytes = random_bytes(bytes_len as usize);
{
let mut se = SelfEncryptor::new(my_storage.clone(), DataMap::None);
se.write(&the_bytes, 0);
data_map = se.close();
}
let mut new_se = SelfEncryptor::new(my_storage.clone(), data_map);
let fetched = new_se.read(0, bytes_len);
assert_eq!(fetched, the_bytes);
});
b.bytes = 2 * bytes_len;
}
#[bench]
fn write_then_read_3_megabytes(b: &mut Bencher) {
let my_storage = Arc::new(SimpleStorage::new());
let bytes_len = 3 * 1024 * 1024;
b.iter(|| {
let data_map: DataMap;
let the_bytes = random_bytes(bytes_len as usize);
{
let mut se = SelfEncryptor::new(my_storage.clone(), DataMap::None);
se.write(&the_bytes, 0);
data_map = se.close();
}
let mut new_se = SelfEncryptor::new(my_storage.clone(), data_map);
let fetched = new_se.read(0, bytes_len);
assert_eq!(fetched, the_bytes);
});
b.bytes = 2 * bytes_len;
}
#[bench]
fn write_then_read_10_megabytes(b: &mut Bencher) {
let my_storage = Arc::new(SimpleStorage::new());
let bytes_len = 10 * 1024 * 1024;
b.iter(|| {
let data_map: DataMap;
let the_bytes = random_bytes(bytes_len as usize);
{
let mut se = SelfEncryptor::new(my_storage.clone(), DataMap::None);
se.write(&the_bytes, 0);
data_map = se.close();
}
let mut new_se = SelfEncryptor::new(my_storage.clone(), data_map);
let fetched = new_se.read(0, bytes_len);
assert_eq!(fetched, the_bytes);
});
b.bytes = 2 * bytes_len;
}
#[bench]
fn write_then_read_100_megabytes(b: &mut Bencher) {
let storage = Arc::new(SimpleStorage::new());
let bytes_len = 100 * 1024 * 1024;
b.iter(|| {
let data_map: DataMap;
let bytes = random_bytes(bytes_len as usize);
{
let mut se = SelfEncryptor::new(storage.clone(), DataMap::None);
se.write(&bytes, 0);
data_map = se.close();
}
let mut se = SelfEncryptor::new(storage.clone(), data_map);
let fetched = se.read(0, bytes_len);
assert_eq!(fetched, bytes);
});
b.bytes = 2 * bytes_len;
}
#[bench]
fn write_then_read_range(b: &mut Bencher) {
let storage = Arc::new(SimpleStorage::new());
let string_range = vec![512 * 1024,
1 * 1024 * 1024,
2 * 1024 * 1024,
3 * 1024 * 1024,
4 * 1024 * 1024,
5 * 1024 * 1024,
6 * 1024 * 1024];
for bytes_len in string_range {
b.iter(|| {
let data_map: DataMap;
let the_bytes = random_bytes(bytes_len as usize);
{
let mut se = SelfEncryptor::new(storage.clone(), DataMap::None);
se.write(&the_bytes, 0);
data_map = se.close();
}
let mut new_se = SelfEncryptor::new(storage.clone(), data_map);
let fetched = new_se.read(0, bytes_len);
assert_eq!(fetched, the_bytes);
});
b.bytes = 2 * bytes_len;
}
}