File: connection_creation.rs

package info (click to toggle)
aws-crt-python 0.28.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 78,428 kB
  • sloc: ansic: 437,955; python: 27,657; makefile: 5,855; sh: 4,289; ruby: 208; java: 82; perl: 73; cpp: 25; xml: 11
file content (44 lines) | stat: -rw-r--r-- 1,314 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

use criterion::{criterion_group, criterion_main, Criterion};
use s2n_tls::{
    config::Config,
    connection::Builder,
    enums::Mode,
    pool::{ConfigPool, ConfigPoolBuilder, PooledConnection},
};
use std::sync::Arc;

fn connection_wipe(connection_pool: &Arc<ConfigPool>) {
    // get a connection from the pool
    let conn = PooledConnection::new(connection_pool).unwrap();
    // "drop" the connection, wiping it and returning it to the pool
    drop(conn);
}

fn connection_new(config: &Config) {
    let conn = config
        .build_connection(s2n_tls::enums::Mode::Server)
        .unwrap();
    drop(conn);
}

fn connection_creation(c: &mut Criterion) {
    let mut group = c.benchmark_group("Connection Creation");
    let config = s2n_tls::config::Builder::new().build().unwrap();
    let connection_pool = ConfigPoolBuilder::new(Mode::Server, config.clone()).build();

    group.bench_function("connection reuse", |b| {
        b.iter(|| connection_wipe(&connection_pool));
    });

    group.bench_function("connection allocation", |b| {
        b.iter(|| connection_new(&config));
    });

    group.finish();
}

criterion_group!(benches, connection_creation);
criterion_main!(benches);