Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance comparing against the other twox implementation? #49

Open
parthpatel opened this issue Dec 18, 2024 · 8 comments
Open

Performance comparing against the other twox implementation? #49

parthpatel opened this issue Dec 18, 2024 · 8 comments

Comments

@parthpatel
Copy link

parthpatel commented Dec 18, 2024

Hi,
I have following test([1]) to benchmark the hash function. I am comparing SipHasher, twox_hash and xxh3_64 (from this git repo). I always get sub-par performance from xxh3_64 from this git repo. [0] shows the features enabled by default in cargo and the results of this test. What am I doing wrong?

[0]

For 127 datalen and 100000000 iterations: 
 sip_hasher 2822 
 xxhash3-rust oneshot 6400 
 xxhash3-rust streaming 9643 
 twoxhash oneshot 452
For 129 datalen and 100000000 iterations: 
 sip_hasher 2853 
 xxhash3-rust oneshot 7387 
 xxhash3-rust streaming 9769 
 twoxhash oneshot 452
For 255 datalen and 100000000 iterations: 
 sip_hasher 4899ms 
 xxhash3-rust oneshot 14050ms 
 xxhash3-rust streaming 12819ms 
 twoxhash oneshot 5757ms 
For 511 datalen and 100000000 iterations: 
 sip_hasher 9376ms 
 xxhash3-rust oneshot 19228ms 
 xxhash3-rust streaming 18570ms 
 twoxhash oneshot 9335ms 

======
 % rustc --print=cfg                                                                             
debug_assertions
panic="unwind"
target_abi=""
target_arch="x86_64"
target_endian="little"
target_env="gnu"
target_family="unix"
target_feature="fxsr"
target_feature="sse"
target_feature="sse2"
target_has_atomic="16"
target_has_atomic="32"
target_has_atomic="64"
target_has_atomic="8"
target_has_atomic="ptr"
target_os="linux"
target_pointer_width="64"
target_vendor="unknown"
unix

[1]

    #[test]
    fn test_hash_speeds() {
        let repetitions = 100000000;
        // < 128 bytes
        let mut samples127: Vec<Vec<u8>> = Vec::new();
        { 1..11 }.for_each(|_| {
            let mut temp: Vec<u8> = Vec::new();
            { 1..128 }.into_iter().for_each(|_| {
                temp.push(rand::random());
            });
            samples127.push(temp);
        });

        test_hash_speed(samples127, repetitions);

        // > 128 bytes
        let mut samples129: Vec<Vec<u8>> = Vec::new();
        { 1..11 }.for_each(|_| {
            let mut temp: Vec<u8> = Vec::new();
            { 1..130 }.into_iter().for_each(|_| {
                temp.push(rand::random());
            });
            samples129.push(temp);
        });

        test_hash_speed(samples129, repetitions);
    }

    fn test_hash_speed(data: Vec<Vec<u8>>, total: usize) {
        let seed = 12897;
        let seed2 = 13297;
        let mut xxh3_hasher: Xxh3 = Xxh3::with_seed(seed);
        let mut sip_hasher = std::hash::SipHasher::new_with_keys(seed, seed2);

        let data_len = data[0].len();
        let mut new_data: Vec<&[u8]> = Vec::new();
        data.iter().for_each(|x| {
            new_data.push(x.as_slice());
        });
        
        let mut a: u64 = 0;

        use std::time::SystemTime;
        // siphasher
        let mut now = SystemTime::now();
        for _i in 1..total {
            sip_hasher.write(new_data[_i % new_data.len()]);
            a = a.wrapping_add(sip_hasher.finish());
        }
        let siphasher_then = now.elapsed().unwrap().as_millis();

        // xxh3_64 oneshot
        now = SystemTime::now();

        for _i in 1..total {
            a = a.wrapping_add(xxh3_64_with_seed(new_data[_i % new_data.len()], seed));
        }
        let xxh3_64_oneshot_then = now.elapsed().unwrap().as_millis();

        // xxh3_64 streaming
        now = SystemTime::now();
        for _i in 1..total {
            xxh3_hasher.write(new_data[_i % new_data.len()]);
            a = a.wrapping_add(xxh3_hasher.finish());
        }
        let xxh3_64_streaming_then = now.elapsed().unwrap().as_millis();

        // twox_hash oneshot
        now = SystemTime::now();
        for _i in 1..total {
            a = a.wrapping_add(twox_hash::XxHash3_64::oneshot_with_seed(
                seed,
                new_data[_i % new_data.len()],
            ));
        }
        let twox_oneshot_then = now.elapsed().unwrap().as_millis();

        println!("For {} datalen and {} iterations: \n sip_hasher {} \n xxhash3-rust oneshot {} \n xxhash3-rust streaming {} \n twoxhash oneshot {}", data_len, total, siphasher_then, xxh3_64_oneshot_then, xxh3_64_streaming_then, twox_oneshot_then);
    }
@parthpatel parthpatel changed the title Sub-part performance comparing against the other twox implementation. Sub-par performance comparing against the other twox implementation. Dec 18, 2024
@parthpatel
Copy link
Author

I ran the test for all byte sizes upto 256. Here are the results:

For 0 datalen and 10000000 iterations: 
 sip_hasher 48ms 
 xxhash3-rust oneshot 107ms 
 xxhash3-rust streaming 193ms 
 twoxhash oneshot 45ms 
For 1 datalen and 10000000 iterations: 
 sip_hasher 49ms 
 xxhash3-rust oneshot 111ms 
 xxhash3-rust streaming 694ms 
 twoxhash oneshot 45ms 
For 2 datalen and 10000000 iterations: 
 sip_hasher 57ms 
 xxhash3-rust oneshot 111ms 
 xxhash3-rust streaming 703ms 
 twoxhash oneshot 45ms 
For 3 datalen and 10000000 iterations: 
 sip_hasher 60ms 
 xxhash3-rust oneshot 111ms 
 xxhash3-rust streaming 710ms 
 twoxhash oneshot 45ms 
For 4 datalen and 10000000 iterations: 
 sip_hasher 67ms 
 xxhash3-rust oneshot 143ms 
 xxhash3-rust streaming 710ms 
 twoxhash oneshot 45ms 
For 5 datalen and 10000000 iterations: 
 sip_hasher 69ms 
 xxhash3-rust oneshot 143ms 
 xxhash3-rust streaming 721ms 
 twoxhash oneshot 45ms 
For 6 datalen and 10000000 iterations: 
 sip_hasher 80ms 
 xxhash3-rust oneshot 143ms 
 xxhash3-rust streaming 722ms 
 twoxhash oneshot 45ms 
For 7 datalen and 10000000 iterations: 
 sip_hasher 83ms 
 xxhash3-rust oneshot 143ms 
 xxhash3-rust streaming 730ms 
 twoxhash oneshot 45ms 
For 8 datalen and 10000000 iterations: 
 sip_hasher 67ms 
 xxhash3-rust oneshot 143ms 
 xxhash3-rust streaming 718ms 
 twoxhash oneshot 45ms 
For 9 datalen and 10000000 iterations: 
 sip_hasher 90ms 
 xxhash3-rust oneshot 160ms 
 xxhash3-rust streaming 732ms 
 twoxhash oneshot 45ms 
For 10 datalen and 10000000 iterations: 
 sip_hasher 95ms 
 xxhash3-rust oneshot 159ms 
 xxhash3-rust streaming 729ms 
 twoxhash oneshot 45ms 
For 11 datalen and 10000000 iterations: 
 sip_hasher 98ms 
 xxhash3-rust oneshot 161ms 
 xxhash3-rust streaming 728ms 
 twoxhash oneshot 45ms 
For 12 datalen and 10000000 iterations: 
 sip_hasher 96ms 
 xxhash3-rust oneshot 160ms 
 xxhash3-rust streaming 727ms 
 twoxhash oneshot 45ms 
For 13 datalen and 10000000 iterations: 
 sip_hasher 103ms 
 xxhash3-rust oneshot 161ms 
 xxhash3-rust streaming 741ms 
 twoxhash oneshot 45ms 
For 14 datalen and 10000000 iterations: 
 sip_hasher 105ms 
 xxhash3-rust oneshot 160ms 
 xxhash3-rust streaming 739ms 
 twoxhash oneshot 45ms 
For 15 datalen and 10000000 iterations: 
 sip_hasher 107ms 
 xxhash3-rust oneshot 160ms 
 xxhash3-rust streaming 741ms 
 twoxhash oneshot 45ms 
For 16 datalen and 10000000 iterations: 
 sip_hasher 83ms 
 xxhash3-rust oneshot 160ms 
 xxhash3-rust streaming 741ms 
 twoxhash oneshot 45ms 
For 17 datalen and 10000000 iterations: 
 sip_hasher 112ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 749ms 
 twoxhash oneshot 45ms 
For 18 datalen and 10000000 iterations: 
 sip_hasher 111ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 749ms 
 twoxhash oneshot 45ms 
For 19 datalen and 10000000 iterations: 
 sip_hasher 114ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 752ms 
 twoxhash oneshot 45ms 
For 20 datalen and 10000000 iterations: 
 sip_hasher 104ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 747ms 
 twoxhash oneshot 45ms 
For 21 datalen and 10000000 iterations: 
 sip_hasher 122ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 753ms 
 twoxhash oneshot 45ms 
For 22 datalen and 10000000 iterations: 
 sip_hasher 119ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 755ms 
 twoxhash oneshot 45ms 
For 23 datalen and 10000000 iterations: 
 sip_hasher 124ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 759ms 
 twoxhash oneshot 45ms 
For 24 datalen and 10000000 iterations: 
 sip_hasher 100ms 
 xxhash3-rust oneshot 187ms 
 xxhash3-rust streaming 755ms 
 twoxhash oneshot 45ms 
For 25 datalen and 10000000 iterations: 
 sip_hasher 136ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 771ms 
 twoxhash oneshot 45ms 
For 26 datalen and 10000000 iterations: 
 sip_hasher 133ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 774ms 
 twoxhash oneshot 45ms 
For 27 datalen and 10000000 iterations: 
 sip_hasher 139ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 780ms 
 twoxhash oneshot 45ms 
For 28 datalen and 10000000 iterations: 
 sip_hasher 119ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 774ms 
 twoxhash oneshot 45ms 
For 29 datalen and 10000000 iterations: 
 sip_hasher 142ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 779ms 
 twoxhash oneshot 45ms 
For 30 datalen and 10000000 iterations: 
 sip_hasher 148ms 
 xxhash3-rust oneshot 188ms 
 xxhash3-rust streaming 780ms 
 twoxhash oneshot 45ms 
For 31 datalen and 10000000 iterations: 
 sip_hasher 154ms 
 xxhash3-rust oneshot 187ms 
 xxhash3-rust streaming 781ms 
 twoxhash oneshot 45ms 
For 32 datalen and 10000000 iterations: 
 sip_hasher 113ms 
 xxhash3-rust oneshot 187ms 
 xxhash3-rust streaming 767ms 
 twoxhash oneshot 45ms 
For 33 datalen and 10000000 iterations: 
 sip_hasher 151ms 
 xxhash3-rust oneshot 297ms 
 xxhash3-rust streaming 783ms 
 twoxhash oneshot 45ms 
For 34 datalen and 10000000 iterations: 
 sip_hasher 157ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 787ms 
 twoxhash oneshot 45ms 
For 35 datalen and 10000000 iterations: 
 sip_hasher 160ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 794ms 
 twoxhash oneshot 45ms 
For 36 datalen and 10000000 iterations: 
 sip_hasher 142ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 792ms 
 twoxhash oneshot 45ms 
For 37 datalen and 10000000 iterations: 
 sip_hasher 162ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 804ms 
 twoxhash oneshot 45ms 
For 38 datalen and 10000000 iterations: 
 sip_hasher 164ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 807ms 
 twoxhash oneshot 45ms 
For 39 datalen and 10000000 iterations: 
 sip_hasher 166ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 805ms 
 twoxhash oneshot 45ms 
For 40 datalen and 10000000 iterations: 
 sip_hasher 135ms 
 xxhash3-rust oneshot 297ms 
 xxhash3-rust streaming 798ms 
 twoxhash oneshot 45ms 
For 41 datalen and 10000000 iterations: 
 sip_hasher 168ms 
 xxhash3-rust oneshot 295ms 
 xxhash3-rust streaming 807ms 
 twoxhash oneshot 45ms 
For 42 datalen and 10000000 iterations: 
 sip_hasher 169ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 809ms 
 twoxhash oneshot 45ms 
For 43 datalen and 10000000 iterations: 
 sip_hasher 170ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 817ms 
 twoxhash oneshot 45ms 
For 44 datalen and 10000000 iterations: 
 sip_hasher 164ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 816ms 
 twoxhash oneshot 45ms 
For 45 datalen and 10000000 iterations: 
 sip_hasher 173ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 817ms 
 twoxhash oneshot 45ms 
For 46 datalen and 10000000 iterations: 
 sip_hasher 173ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 820ms 
 twoxhash oneshot 45ms 
For 47 datalen and 10000000 iterations: 
 sip_hasher 174ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 825ms 
 twoxhash oneshot 45ms 
For 48 datalen and 10000000 iterations: 
 sip_hasher 161ms 
 xxhash3-rust oneshot 295ms 
 xxhash3-rust streaming 813ms 
 twoxhash oneshot 45ms 
For 49 datalen and 10000000 iterations: 
 sip_hasher 177ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 825ms 
 twoxhash oneshot 45ms 
For 50 datalen and 10000000 iterations: 
 sip_hasher 178ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 829ms 
 twoxhash oneshot 45ms 
For 51 datalen and 10000000 iterations: 
 sip_hasher 179ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 839ms 
 twoxhash oneshot 45ms 
For 52 datalen and 10000000 iterations: 
 sip_hasher 174ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 834ms 
 twoxhash oneshot 45ms 
For 53 datalen and 10000000 iterations: 
 sip_hasher 182ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 843ms 
 twoxhash oneshot 45ms 
For 54 datalen and 10000000 iterations: 
 sip_hasher 181ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 846ms 
 twoxhash oneshot 45ms 
For 55 datalen and 10000000 iterations: 
 sip_hasher 186ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 848ms 
 twoxhash oneshot 45ms 
For 56 datalen and 10000000 iterations: 
 sip_hasher 171ms 
 xxhash3-rust oneshot 295ms 
 xxhash3-rust streaming 840ms 
 twoxhash oneshot 45ms 
For 57 datalen and 10000000 iterations: 
 sip_hasher 189ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 851ms 
 twoxhash oneshot 45ms 
For 58 datalen and 10000000 iterations: 
 sip_hasher 188ms 
 xxhash3-rust oneshot 295ms 
 xxhash3-rust streaming 857ms 
 twoxhash oneshot 45ms 
For 59 datalen and 10000000 iterations: 
 sip_hasher 191ms 
 xxhash3-rust oneshot 295ms 
 xxhash3-rust streaming 861ms 
 twoxhash oneshot 45ms 
For 60 datalen and 10000000 iterations: 
 sip_hasher 183ms 
 xxhash3-rust oneshot 297ms 
 xxhash3-rust streaming 857ms 
 twoxhash oneshot 45ms 
For 61 datalen and 10000000 iterations: 
 sip_hasher 193ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 866ms 
 twoxhash oneshot 45ms 
For 62 datalen and 10000000 iterations: 
 sip_hasher 196ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 864ms 
 twoxhash oneshot 45ms 
For 63 datalen and 10000000 iterations: 
 sip_hasher 197ms 
 xxhash3-rust oneshot 296ms 
 xxhash3-rust streaming 865ms 
 twoxhash oneshot 45ms 
For 64 datalen and 10000000 iterations: 
 sip_hasher 180ms 
 xxhash3-rust oneshot 295ms 
 xxhash3-rust streaming 862ms 
 twoxhash oneshot 45ms 
For 65 datalen and 10000000 iterations: 
 sip_hasher 200ms 
 xxhash3-rust oneshot 400ms 
 xxhash3-rust streaming 886ms 
 twoxhash oneshot 45ms 
For 66 datalen and 10000000 iterations: 
 sip_hasher 204ms 
 xxhash3-rust oneshot 400ms 
 xxhash3-rust streaming 889ms 
 twoxhash oneshot 45ms 
For 67 datalen and 10000000 iterations: 
 sip_hasher 205ms 
 xxhash3-rust oneshot 400ms 
 xxhash3-rust streaming 894ms 
 twoxhash oneshot 45ms 
For 68 datalen and 10000000 iterations: 
 sip_hasher 198ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 895ms 
 twoxhash oneshot 45ms 
For 69 datalen and 10000000 iterations: 
 sip_hasher 208ms 
 xxhash3-rust oneshot 400ms 
 xxhash3-rust streaming 898ms 
 twoxhash oneshot 45ms 
For 70 datalen and 10000000 iterations: 
 sip_hasher 209ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 903ms 
 twoxhash oneshot 45ms 
For 71 datalen and 10000000 iterations: 
 sip_hasher 213ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 909ms 
 twoxhash oneshot 45ms 
For 72 datalen and 10000000 iterations: 
 sip_hasher 196ms 
 xxhash3-rust oneshot 397ms 
 xxhash3-rust streaming 897ms 
 twoxhash oneshot 45ms 
For 73 datalen and 10000000 iterations: 
 sip_hasher 215ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 916ms 
 twoxhash oneshot 45ms 
For 74 datalen and 10000000 iterations: 
 sip_hasher 218ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 912ms 
 twoxhash oneshot 45ms 
For 75 datalen and 10000000 iterations: 
 sip_hasher 220ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 913ms 
 twoxhash oneshot 45ms 
For 76 datalen and 10000000 iterations: 
 sip_hasher 213ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 917ms 
 twoxhash oneshot 45ms 
For 77 datalen and 10000000 iterations: 
 sip_hasher 225ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 926ms 
 twoxhash oneshot 45ms 
For 78 datalen and 10000000 iterations: 
 sip_hasher 226ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 930ms 
 twoxhash oneshot 45ms 
For 79 datalen and 10000000 iterations: 
 sip_hasher 230ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 930ms 
 twoxhash oneshot 45ms 
For 80 datalen and 10000000 iterations: 
 sip_hasher 210ms 
 xxhash3-rust oneshot 397ms 
 xxhash3-rust streaming 916ms 
 twoxhash oneshot 45ms 
For 81 datalen and 10000000 iterations: 
 sip_hasher 233ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 933ms 
 twoxhash oneshot 45ms 
For 82 datalen and 10000000 iterations: 
 sip_hasher 234ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 937ms 
 twoxhash oneshot 45ms 
For 83 datalen and 10000000 iterations: 
 sip_hasher 238ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 938ms 
 twoxhash oneshot 45ms 
For 84 datalen and 10000000 iterations: 
 sip_hasher 229ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 940ms 
 twoxhash oneshot 45ms 
For 85 datalen and 10000000 iterations: 
 sip_hasher 241ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 938ms 
 twoxhash oneshot 45ms 
For 86 datalen and 10000000 iterations: 
 sip_hasher 242ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 943ms 
 twoxhash oneshot 45ms 
For 87 datalen and 10000000 iterations: 
 sip_hasher 246ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 950ms 
 twoxhash oneshot 45ms 
For 88 datalen and 10000000 iterations: 
 sip_hasher 226ms 
 xxhash3-rust oneshot 398ms 
 xxhash3-rust streaming 942ms 
 twoxhash oneshot 45ms 
For 89 datalen and 10000000 iterations: 
 sip_hasher 248ms 
 xxhash3-rust oneshot 398ms 
 xxhash3-rust streaming 956ms 
 twoxhash oneshot 45ms 
For 90 datalen and 10000000 iterations: 
 sip_hasher 250ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 957ms 
 twoxhash oneshot 45ms 
For 91 datalen and 10000000 iterations: 
 sip_hasher 253ms 
 xxhash3-rust oneshot 398ms 
 xxhash3-rust streaming 961ms 
 twoxhash oneshot 45ms 
For 92 datalen and 10000000 iterations: 
 sip_hasher 246ms 
 xxhash3-rust oneshot 398ms 
 xxhash3-rust streaming 960ms 
 twoxhash oneshot 45ms 
For 93 datalen and 10000000 iterations: 
 sip_hasher 260ms 
 xxhash3-rust oneshot 398ms 
 xxhash3-rust streaming 968ms 
 twoxhash oneshot 45ms 
For 94 datalen and 10000000 iterations: 
 sip_hasher 259ms 
 xxhash3-rust oneshot 398ms 
 xxhash3-rust streaming 972ms 
 twoxhash oneshot 45ms 
For 95 datalen and 10000000 iterations: 
 sip_hasher 261ms 
 xxhash3-rust oneshot 399ms 
 xxhash3-rust streaming 972ms 
 twoxhash oneshot 45ms 
For 96 datalen and 10000000 iterations: 
 sip_hasher 243ms 
 xxhash3-rust oneshot 398ms 
 xxhash3-rust streaming 961ms 
 twoxhash oneshot 45ms 
For 97 datalen and 10000000 iterations: 
 sip_hasher 266ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 976ms 
 twoxhash oneshot 45ms 
For 98 datalen and 10000000 iterations: 
 sip_hasher 268ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 982ms 
 twoxhash oneshot 45ms 
For 99 datalen and 10000000 iterations: 
 sip_hasher 271ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 986ms 
 twoxhash oneshot 45ms 
For 100 datalen and 10000000 iterations: 
 sip_hasher 263ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 984ms 
 twoxhash oneshot 45ms 
For 101 datalen and 10000000 iterations: 
 sip_hasher 275ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 989ms 
 twoxhash oneshot 45ms 
For 102 datalen and 10000000 iterations: 
 sip_hasher 274ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 996ms 
 twoxhash oneshot 45ms 
For 103 datalen and 10000000 iterations: 
 sip_hasher 279ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 998ms 
 twoxhash oneshot 45ms 
For 104 datalen and 10000000 iterations: 
 sip_hasher 260ms 
 xxhash3-rust oneshot 496ms 
 xxhash3-rust streaming 993ms 
 twoxhash oneshot 45ms 
For 105 datalen and 10000000 iterations: 
 sip_hasher 283ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1001ms 
 twoxhash oneshot 45ms 
For 106 datalen and 10000000 iterations: 
 sip_hasher 284ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1002ms 
 twoxhash oneshot 45ms 
For 107 datalen and 10000000 iterations: 
 sip_hasher 288ms 
 xxhash3-rust oneshot 496ms 
 xxhash3-rust streaming 1007ms 
 twoxhash oneshot 45ms 
For 108 datalen and 10000000 iterations: 
 sip_hasher 278ms 
 xxhash3-rust oneshot 496ms 
 xxhash3-rust streaming 1013ms 
 twoxhash oneshot 45ms 
For 109 datalen and 10000000 iterations: 
 sip_hasher 292ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1019ms 
 twoxhash oneshot 45ms 
For 110 datalen and 10000000 iterations: 
 sip_hasher 292ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1017ms 
 twoxhash oneshot 45ms 
For 111 datalen and 10000000 iterations: 
 sip_hasher 295ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1021ms 
 twoxhash oneshot 45ms 
For 112 datalen and 10000000 iterations: 
 sip_hasher 276ms 
 xxhash3-rust oneshot 496ms 
 xxhash3-rust streaming 1010ms 
 twoxhash oneshot 45ms 
For 113 datalen and 10000000 iterations: 
 sip_hasher 301ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1027ms 
 twoxhash oneshot 45ms 
For 114 datalen and 10000000 iterations: 
 sip_hasher 298ms 
 xxhash3-rust oneshot 498ms 
 xxhash3-rust streaming 1029ms 
 twoxhash oneshot 45ms 
For 115 datalen and 10000000 iterations: 
 sip_hasher 305ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1038ms 
 twoxhash oneshot 45ms 
For 116 datalen and 10000000 iterations: 
 sip_hasher 294ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1034ms 
 twoxhash oneshot 45ms 
For 117 datalen and 10000000 iterations: 
 sip_hasher 307ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1036ms 
 twoxhash oneshot 45ms 
For 118 datalen and 10000000 iterations: 
 sip_hasher 307ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1041ms 
 twoxhash oneshot 45ms 
For 119 datalen and 10000000 iterations: 
 sip_hasher 311ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1043ms 
 twoxhash oneshot 45ms 
For 120 datalen and 10000000 iterations: 
 sip_hasher 292ms 
 xxhash3-rust oneshot 496ms 
 xxhash3-rust streaming 1045ms 
 twoxhash oneshot 45ms 
For 121 datalen and 10000000 iterations: 
 sip_hasher 315ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1051ms 
 twoxhash oneshot 45ms 
For 122 datalen and 10000000 iterations: 
 sip_hasher 316ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1052ms 
 twoxhash oneshot 45ms 
For 123 datalen and 10000000 iterations: 
 sip_hasher 319ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1055ms 
 twoxhash oneshot 45ms 
For 124 datalen and 10000000 iterations: 
 sip_hasher 311ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1055ms 
 twoxhash oneshot 45ms 
For 125 datalen and 10000000 iterations: 
 sip_hasher 324ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1057ms 
 twoxhash oneshot 45ms 
For 126 datalen and 10000000 iterations: 
 sip_hasher 325ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1058ms 
 twoxhash oneshot 45ms 
For 127 datalen and 10000000 iterations: 
 sip_hasher 328ms 
 xxhash3-rust oneshot 497ms 
 xxhash3-rust streaming 1061ms 
 twoxhash oneshot 45ms 
For 128 datalen and 10000000 iterations: 
 sip_hasher 307ms 
 xxhash3-rust oneshot 496ms 
 xxhash3-rust streaming 1143ms 
 twoxhash oneshot 45ms 
For 129 datalen and 10000000 iterations: 
 sip_hasher 331ms 
 xxhash3-rust oneshot 544ms 
 xxhash3-rust streaming 1065ms 
 twoxhash oneshot 45ms 
For 130 datalen and 10000000 iterations: 
 sip_hasher 333ms 
 xxhash3-rust oneshot 544ms 
 xxhash3-rust streaming 1070ms 
 twoxhash oneshot 45ms 
For 131 datalen and 10000000 iterations: 
 sip_hasher 338ms 
 xxhash3-rust oneshot 544ms 
 xxhash3-rust streaming 1076ms 
 twoxhash oneshot 45ms 
For 132 datalen and 10000000 iterations: 
 sip_hasher 326ms 
 xxhash3-rust oneshot 544ms 
 xxhash3-rust streaming 1077ms 
 twoxhash oneshot 45ms 
For 133 datalen and 10000000 iterations: 
 sip_hasher 339ms 
 xxhash3-rust oneshot 544ms 
 xxhash3-rust streaming 1084ms 
 twoxhash oneshot 45ms 
For 134 datalen and 10000000 iterations: 
 sip_hasher 341ms 
 xxhash3-rust oneshot 544ms 
 xxhash3-rust streaming 1086ms 
 twoxhash oneshot 45ms 
For 135 datalen and 10000000 iterations: 
 sip_hasher 344ms 
 xxhash3-rust oneshot 544ms 
 xxhash3-rust streaming 1088ms 
 twoxhash oneshot 45ms 
For 136 datalen and 10000000 iterations: 
 sip_hasher 324ms 
 xxhash3-rust oneshot 543ms 
 xxhash3-rust streaming 1086ms 
 twoxhash oneshot 45ms 
For 137 datalen and 10000000 iterations: 
 sip_hasher 348ms 
 xxhash3-rust oneshot 543ms 
 xxhash3-rust streaming 1097ms 
 twoxhash oneshot 45ms 
For 138 datalen and 10000000 iterations: 
 sip_hasher 350ms 
 xxhash3-rust oneshot 543ms 
 xxhash3-rust streaming 1101ms 
 twoxhash oneshot 45ms 
For 139 datalen and 10000000 iterations: 
 sip_hasher 354ms 
 xxhash3-rust oneshot 543ms 
 xxhash3-rust streaming 1104ms 
 twoxhash oneshot 45ms 
For 140 datalen and 10000000 iterations: 
 sip_hasher 343ms 
 xxhash3-rust oneshot 543ms 
 xxhash3-rust streaming 1105ms 
 twoxhash oneshot 45ms 
For 141 datalen and 10000000 iterations: 
 sip_hasher 355ms 
 xxhash3-rust oneshot 543ms 
 xxhash3-rust streaming 1112ms 
 twoxhash oneshot 45ms 
For 142 datalen and 10000000 iterations: 
 sip_hasher 355ms 
 xxhash3-rust oneshot 543ms 
 xxhash3-rust streaming 1111ms 
 twoxhash oneshot 45ms 
For 143 datalen and 10000000 iterations: 
 sip_hasher 361ms 
 xxhash3-rust oneshot 543ms 
 xxhash3-rust streaming 1118ms 
 twoxhash oneshot 45ms 
For 144 datalen and 10000000 iterations: 
 sip_hasher 339ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1099ms 
 twoxhash oneshot 45ms 
For 145 datalen and 10000000 iterations: 
 sip_hasher 369ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1119ms 
 twoxhash oneshot 45ms 
For 146 datalen and 10000000 iterations: 
 sip_hasher 365ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1121ms 
 twoxhash oneshot 45ms 
For 147 datalen and 10000000 iterations: 
 sip_hasher 368ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1127ms 
 twoxhash oneshot 45ms 
For 148 datalen and 10000000 iterations: 
 sip_hasher 359ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1129ms 
 twoxhash oneshot 45ms 
For 149 datalen and 10000000 iterations: 
 sip_hasher 372ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1129ms 
 twoxhash oneshot 45ms 
For 150 datalen and 10000000 iterations: 
 sip_hasher 378ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1132ms 
 twoxhash oneshot 45ms 
For 151 datalen and 10000000 iterations: 
 sip_hasher 376ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1146ms 
 twoxhash oneshot 45ms 
For 152 datalen and 10000000 iterations: 
 sip_hasher 355ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1130ms 
 twoxhash oneshot 45ms 
For 153 datalen and 10000000 iterations: 
 sip_hasher 378ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1144ms 
 twoxhash oneshot 45ms 
For 154 datalen and 10000000 iterations: 
 sip_hasher 380ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1145ms 
 twoxhash oneshot 45ms 
For 155 datalen and 10000000 iterations: 
 sip_hasher 392ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1147ms 
 twoxhash oneshot 45ms 
For 156 datalen and 10000000 iterations: 
 sip_hasher 376ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1146ms 
 twoxhash oneshot 45ms 
For 157 datalen and 10000000 iterations: 
 sip_hasher 389ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1155ms 
 twoxhash oneshot 45ms 
For 158 datalen and 10000000 iterations: 
 sip_hasher 390ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1155ms 
 twoxhash oneshot 45ms 
For 159 datalen and 10000000 iterations: 
 sip_hasher 393ms 
 xxhash3-rust oneshot 599ms 
 xxhash3-rust streaming 1156ms 
 twoxhash oneshot 45ms 
For 160 datalen and 10000000 iterations: 
 sip_hasher 372ms 
 xxhash3-rust oneshot 649ms 
 xxhash3-rust streaming 1139ms 
 twoxhash oneshot 45ms 
For 161 datalen and 10000000 iterations: 
 sip_hasher 395ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1162ms 
 twoxhash oneshot 45ms 
For 162 datalen and 10000000 iterations: 
 sip_hasher 397ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1164ms 
 twoxhash oneshot 45ms 
For 163 datalen and 10000000 iterations: 
 sip_hasher 400ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1172ms 
 twoxhash oneshot 45ms 
For 164 datalen and 10000000 iterations: 
 sip_hasher 392ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1169ms 
 twoxhash oneshot 45ms 
For 165 datalen and 10000000 iterations: 
 sip_hasher 404ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1174ms 
 twoxhash oneshot 45ms 
For 166 datalen and 10000000 iterations: 
 sip_hasher 406ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1178ms 
 twoxhash oneshot 45ms 
For 167 datalen and 10000000 iterations: 
 sip_hasher 410ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1180ms 
 twoxhash oneshot 45ms 
For 168 datalen and 10000000 iterations: 
 sip_hasher 388ms 
 xxhash3-rust oneshot 649ms 
 xxhash3-rust streaming 1175ms 
 twoxhash oneshot 45ms 
For 169 datalen and 10000000 iterations: 
 sip_hasher 413ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1186ms 
 twoxhash oneshot 45ms 
For 170 datalen and 10000000 iterations: 
 sip_hasher 412ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1187ms 
 twoxhash oneshot 45ms 
For 171 datalen and 10000000 iterations: 
 sip_hasher 417ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1189ms 
 twoxhash oneshot 45ms 
For 172 datalen and 10000000 iterations: 
 sip_hasher 408ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1197ms 
 twoxhash oneshot 45ms 
For 173 datalen and 10000000 iterations: 
 sip_hasher 419ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1199ms 
 twoxhash oneshot 45ms 
For 174 datalen and 10000000 iterations: 
 sip_hasher 423ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1200ms 
 twoxhash oneshot 45ms 
For 175 datalen and 10000000 iterations: 
 sip_hasher 427ms 
 xxhash3-rust oneshot 650ms 
 xxhash3-rust streaming 1202ms 
 twoxhash oneshot 45ms 
For 176 datalen and 10000000 iterations: 
 sip_hasher 405ms 
 xxhash3-rust oneshot 700ms 
 xxhash3-rust streaming 1185ms 
 twoxhash oneshot 45ms 
For 177 datalen and 10000000 iterations: 
 sip_hasher 427ms 
 xxhash3-rust oneshot 700ms 
 xxhash3-rust streaming 1207ms 
 twoxhash oneshot 45ms 
For 178 datalen and 10000000 iterations: 
 sip_hasher 429ms 
 xxhash3-rust oneshot 700ms 
 xxhash3-rust streaming 1215ms 
 twoxhash oneshot 45ms 
For 179 datalen and 10000000 iterations: 
 sip_hasher 431ms 
 xxhash3-rust oneshot 700ms 
 xxhash3-rust streaming 1222ms 
 twoxhash oneshot 45ms 
For 180 datalen and 10000000 iterations: 
 sip_hasher 424ms 
 xxhash3-rust oneshot 700ms 
 xxhash3-rust streaming 1221ms 
 twoxhash oneshot 45ms 
For 181 datalen and 10000000 iterations: 
 sip_hasher 435ms 
 xxhash3-rust oneshot 700ms 
 xxhash3-rust streaming 1227ms 
 twoxhash oneshot 45ms 
For 182 datalen and 10000000 iterations: 
 sip_hasher 437ms 
 xxhash3-rust oneshot 700ms 
 xxhash3-rust streaming 1229ms 
 twoxhash oneshot 45ms 
For 183 datalen and 10000000 iterations: 
 sip_hasher 456ms 
 xxhash3-rust oneshot 703ms 
 xxhash3-rust streaming 1232ms 
 twoxhash oneshot 45ms 
For 184 datalen and 10000000 iterations: 
 sip_hasher 421ms 
 xxhash3-rust oneshot 700ms 
 xxhash3-rust streaming 1234ms 
 twoxhash oneshot 45ms 
For 185 datalen and 10000000 iterations: 
 sip_hasher 444ms 
 xxhash3-rust oneshot 701ms 
 xxhash3-rust streaming 1241ms 
 twoxhash oneshot 45ms 
For 186 datalen and 10000000 iterations: 
 sip_hasher 445ms 
 xxhash3-rust oneshot 701ms 
 xxhash3-rust streaming 1243ms 
 twoxhash oneshot 45ms 
For 187 datalen and 10000000 iterations: 
 sip_hasher 449ms 
 xxhash3-rust oneshot 701ms 
 xxhash3-rust streaming 1247ms 
 twoxhash oneshot 45ms 
For 188 datalen and 10000000 iterations: 
 sip_hasher 441ms 
 xxhash3-rust oneshot 701ms 
 xxhash3-rust streaming 1244ms 
 twoxhash oneshot 45ms 
For 189 datalen and 10000000 iterations: 
 sip_hasher 454ms 
 xxhash3-rust oneshot 701ms 
 xxhash3-rust streaming 1252ms 
 twoxhash oneshot 45ms 
For 190 datalen and 10000000 iterations: 
 sip_hasher 455ms 
 xxhash3-rust oneshot 701ms 
 xxhash3-rust streaming 1254ms 
 twoxhash oneshot 45ms 
For 191 datalen and 10000000 iterations: 
 sip_hasher 461ms 
 xxhash3-rust oneshot 701ms 
 xxhash3-rust streaming 1259ms 
 twoxhash oneshot 45ms 
For 192 datalen and 10000000 iterations: 
 sip_hasher 439ms 
 xxhash3-rust oneshot 753ms 
 xxhash3-rust streaming 1231ms 
 twoxhash oneshot 45ms 
For 193 datalen and 10000000 iterations: 
 sip_hasher 462ms 
 xxhash3-rust oneshot 754ms 
 xxhash3-rust streaming 1261ms 
 twoxhash oneshot 45ms 
For 194 datalen and 10000000 iterations: 
 sip_hasher 464ms 
 xxhash3-rust oneshot 753ms 
 xxhash3-rust streaming 1262ms 
 twoxhash oneshot 45ms 
For 195 datalen and 10000000 iterations: 
 sip_hasher 468ms 
 xxhash3-rust oneshot 754ms 
 xxhash3-rust streaming 1261ms 
 twoxhash oneshot 45ms 
For 196 datalen and 10000000 iterations: 
 sip_hasher 457ms 
 xxhash3-rust oneshot 753ms 
 xxhash3-rust streaming 1264ms 
 twoxhash oneshot 45ms 
For 197 datalen and 10000000 iterations: 
 sip_hasher 471ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1271ms 
 twoxhash oneshot 45ms 
For 198 datalen and 10000000 iterations: 
 sip_hasher 469ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1271ms 
 twoxhash oneshot 45ms 
For 199 datalen and 10000000 iterations: 
 sip_hasher 472ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1274ms 
 twoxhash oneshot 45ms 
For 200 datalen and 10000000 iterations: 
 sip_hasher 452ms 
 xxhash3-rust oneshot 751ms 
 xxhash3-rust streaming 1270ms 
 twoxhash oneshot 45ms 
For 201 datalen and 10000000 iterations: 
 sip_hasher 480ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1283ms 
 twoxhash oneshot 45ms 
For 202 datalen and 10000000 iterations: 
 sip_hasher 477ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1286ms 
 twoxhash oneshot 45ms 
For 203 datalen and 10000000 iterations: 
 sip_hasher 481ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1291ms 
 twoxhash oneshot 45ms 
For 204 datalen and 10000000 iterations: 
 sip_hasher 472ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1287ms 
 twoxhash oneshot 45ms 
For 205 datalen and 10000000 iterations: 
 sip_hasher 484ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1288ms 
 twoxhash oneshot 45ms 
For 206 datalen and 10000000 iterations: 
 sip_hasher 487ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1291ms 
 twoxhash oneshot 45ms 
For 207 datalen and 10000000 iterations: 
 sip_hasher 491ms 
 xxhash3-rust oneshot 752ms 
 xxhash3-rust streaming 1295ms 
 twoxhash oneshot 45ms 
For 208 datalen and 10000000 iterations: 
 sip_hasher 469ms 
 xxhash3-rust oneshot 806ms 
 xxhash3-rust streaming 1285ms 
 twoxhash oneshot 45ms 
For 209 datalen and 10000000 iterations: 
 sip_hasher 495ms 
 xxhash3-rust oneshot 807ms 
 xxhash3-rust streaming 1302ms 
 twoxhash oneshot 45ms 
For 210 datalen and 10000000 iterations: 
 sip_hasher 495ms 
 xxhash3-rust oneshot 807ms 
 xxhash3-rust streaming 1309ms 
 twoxhash oneshot 45ms 
For 211 datalen and 10000000 iterations: 
 sip_hasher 500ms 
 xxhash3-rust oneshot 807ms 
 xxhash3-rust streaming 1316ms 
 twoxhash oneshot 45ms 
For 212 datalen and 10000000 iterations: 
 sip_hasher 488ms 
 xxhash3-rust oneshot 807ms 
 xxhash3-rust streaming 1313ms 
 twoxhash oneshot 45ms 
For 213 datalen and 10000000 iterations: 
 sip_hasher 502ms 
 xxhash3-rust oneshot 807ms 
 xxhash3-rust streaming 1319ms 
 twoxhash oneshot 45ms 
For 214 datalen and 10000000 iterations: 
 sip_hasher 500ms 
 xxhash3-rust oneshot 807ms 
 xxhash3-rust streaming 1321ms 
 twoxhash oneshot 45ms 
For 215 datalen and 10000000 iterations: 
 sip_hasher 508ms 
 xxhash3-rust oneshot 807ms 
 xxhash3-rust streaming 1324ms 
 twoxhash oneshot 45ms 
For 216 datalen and 10000000 iterations: 
 sip_hasher 485ms 
 xxhash3-rust oneshot 806ms 
 xxhash3-rust streaming 1325ms 
 twoxhash oneshot 45ms 
For 217 datalen and 10000000 iterations: 
 sip_hasher 510ms 
 xxhash3-rust oneshot 806ms 
 xxhash3-rust streaming 1328ms 
 twoxhash oneshot 45ms 
For 218 datalen and 10000000 iterations: 
 sip_hasher 525ms 
 xxhash3-rust oneshot 806ms 
 xxhash3-rust streaming 1330ms 
 twoxhash oneshot 45ms 
For 219 datalen and 10000000 iterations: 
 sip_hasher 512ms 
 xxhash3-rust oneshot 806ms 
 xxhash3-rust streaming 1334ms 
 twoxhash oneshot 45ms 
For 220 datalen and 10000000 iterations: 
 sip_hasher 505ms 
 xxhash3-rust oneshot 807ms 
 xxhash3-rust streaming 1325ms 
 twoxhash oneshot 45ms 
For 221 datalen and 10000000 iterations: 
 sip_hasher 517ms 
 xxhash3-rust oneshot 806ms 
 xxhash3-rust streaming 1333ms 
 twoxhash oneshot 45ms 
For 222 datalen and 10000000 iterations: 
 sip_hasher 516ms 
 xxhash3-rust oneshot 806ms 
 xxhash3-rust streaming 1330ms 
 twoxhash oneshot 45ms 
For 223 datalen and 10000000 iterations: 
 sip_hasher 522ms 
 xxhash3-rust oneshot 806ms 
 xxhash3-rust streaming 1334ms 
 twoxhash oneshot 45ms 
For 224 datalen and 10000000 iterations: 
 sip_hasher 503ms 
 xxhash3-rust oneshot 856ms 
 xxhash3-rust streaming 1319ms 
 twoxhash oneshot 45ms 
For 225 datalen and 10000000 iterations: 
 sip_hasher 524ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1341ms 
 twoxhash oneshot 45ms 
For 226 datalen and 10000000 iterations: 
 sip_hasher 526ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1343ms 
 twoxhash oneshot 45ms 
For 227 datalen and 10000000 iterations: 
 sip_hasher 529ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1352ms 
 twoxhash oneshot 45ms 
For 228 datalen and 10000000 iterations: 
 sip_hasher 521ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1349ms 
 twoxhash oneshot 45ms 
For 229 datalen and 10000000 iterations: 
 sip_hasher 536ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1362ms 
 twoxhash oneshot 45ms 
For 230 datalen and 10000000 iterations: 
 sip_hasher 534ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1366ms 
 twoxhash oneshot 45ms 
For 231 datalen and 10000000 iterations: 
 sip_hasher 539ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1366ms 
 twoxhash oneshot 45ms 
For 232 datalen and 10000000 iterations: 
 sip_hasher 517ms 
 xxhash3-rust oneshot 856ms 
 xxhash3-rust streaming 1367ms 
 twoxhash oneshot 45ms 
For 233 datalen and 10000000 iterations: 
 sip_hasher 542ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1374ms 
 twoxhash oneshot 45ms 
For 234 datalen and 10000000 iterations: 
 sip_hasher 541ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1384ms 
 twoxhash oneshot 45ms 
For 235 datalen and 10000000 iterations: 
 sip_hasher 551ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1384ms 
 twoxhash oneshot 45ms 
For 236 datalen and 10000000 iterations: 
 sip_hasher 537ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1386ms 
 twoxhash oneshot 45ms 
For 237 datalen and 10000000 iterations: 
 sip_hasher 550ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1387ms 
 twoxhash oneshot 45ms 
For 238 datalen and 10000000 iterations: 
 sip_hasher 550ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1389ms 
 twoxhash oneshot 45ms 
For 239 datalen and 10000000 iterations: 
 sip_hasher 556ms 
 xxhash3-rust oneshot 857ms 
 xxhash3-rust streaming 1389ms 
 twoxhash oneshot 45ms 
For 240 datalen and 10000000 iterations: 
 sip_hasher 534ms 
 xxhash3-rust oneshot 907ms 
 xxhash3-rust streaming 1378ms 
 twoxhash oneshot 45ms 
For 241 datalen and 10000000 iterations: 
 sip_hasher 557ms 
 xxhash3-rust oneshot 1464ms 
 xxhash3-rust streaming 1380ms 
 twoxhash oneshot 572ms 
For 242 datalen and 10000000 iterations: 
 sip_hasher 561ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1394ms 
 twoxhash oneshot 572ms 
For 243 datalen and 10000000 iterations: 
 sip_hasher 561ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1400ms 
 twoxhash oneshot 572ms 
For 244 datalen and 10000000 iterations: 
 sip_hasher 553ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1400ms 
 twoxhash oneshot 572ms 
For 245 datalen and 10000000 iterations: 
 sip_hasher 564ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1408ms 
 twoxhash oneshot 572ms 
For 246 datalen and 10000000 iterations: 
 sip_hasher 565ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1406ms 
 twoxhash oneshot 573ms 
For 247 datalen and 10000000 iterations: 
 sip_hasher 570ms 
 xxhash3-rust oneshot 1464ms 
 xxhash3-rust streaming 1406ms 
 twoxhash oneshot 572ms 
For 248 datalen and 10000000 iterations: 
 sip_hasher 550ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1398ms 
 twoxhash oneshot 572ms 
For 249 datalen and 10000000 iterations: 
 sip_hasher 575ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1409ms 
 twoxhash oneshot 572ms 
For 250 datalen and 10000000 iterations: 
 sip_hasher 576ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1411ms 
 twoxhash oneshot 572ms 
For 251 datalen and 10000000 iterations: 
 sip_hasher 577ms 
 xxhash3-rust oneshot 1464ms 
 xxhash3-rust streaming 1416ms 
 twoxhash oneshot 572ms 
For 252 datalen and 10000000 iterations: 
 sip_hasher 569ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1409ms 
 twoxhash oneshot 572ms 
For 253 datalen and 10000000 iterations: 
 sip_hasher 581ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1418ms 
 twoxhash oneshot 572ms 
For 254 datalen and 10000000 iterations: 
 sip_hasher 584ms 
 xxhash3-rust oneshot 1463ms 
 xxhash3-rust streaming 1418ms 
 twoxhash oneshot 572ms 

@DoumanAsh
Copy link
Owner

Hm, that doesn't look good

What is your machine?
Can you also compare it when running with AVX2 enabled by setting env variable: RUSTFLAGS=-Ctarget-feature=+avx2

@DoumanAsh
Copy link
Owner

@parthpatel

It just occurred to me, if you use optimization then compiler can disregard twox computation at the end as it no longer requires variable a

Just to be sure can you add print of variable a in addition to time stats?

@DoumanAsh
Copy link
Owner

DoumanAsh commented Dec 19, 2024

I re-wrote your benchmark to make sure your measurements do not get affected by optimizations in a best possible way.
Please refer to black_box for more details.
Also be careful to make judgement of code performance using Rust or C++
It is important to remember that benchmarks must be written in a way that prevents compiler from optimizing away actual work as much as possible.
So you can never disregard result of code that you benchmark as it can trigger overly eager compiler to optimize it away partially or fully

Moving forward:

My numbers might be different from yours as I have different hardware to yours so you should not judge it strictly
I usually use opt-level = "z" to get accurate benchmark of code as it avoids overly eager optimizations (but twox behaves very badly with such conservative optimization level)
So in this case I run with opt-level = 3 using following profile:

[profile.release]
lto = true
opt-level = 3
incremental = false
codegen-units = 1

I made it pretty long to check all inputs from length 1 to 1024
Code: https://gist.github.com/DoumanAsh/72f7129a5abdcecf5f94a1a94c5dc425

My results(I made only extract to highlight important break points) show quite different picture:

7393399442927252277: For 16 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 353ms 
 xxhash3-rust streaming: 1582ms 
 twoxhash oneshot 630ms

18107014750929657675: For 17 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 499ms 
 xxhash3-rust streaming: 2546ms 
 twoxhash oneshot 812ms

17137250630941678326: For 127 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 1049ms 
 xxhash3-rust streaming: 3176ms 
 twoxhash oneshot 1061ms

16691554853187828566: For 128 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 949ms 
 xxhash3-rust streaming: 2559ms 
 twoxhash oneshot 1095ms

15576499104896345258: For 129 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 1200ms 
 xxhash3-rust streaming: 3379ms 
 twoxhash oneshot 1482ms

1993168041117770016: For 130 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 1220ms 
 xxhash3-rust streaming: 3394ms 
 twoxhash oneshot 1362ms


7656509927383145291: For 238 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 1922ms 
 xxhash3-rust streaming: 4132ms 
 twoxhash oneshot 2305ms

2069187219758971633: For 239 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 1963ms 
 xxhash3-rust streaming: 4284ms 
 twoxhash oneshot 2364ms

1209743263440482121: For 240 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 2013ms 
 xxhash3-rust streaming: 3900ms 
 twoxhash oneshot 2504ms

10537190308546891312: For 241 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 3658ms 
 xxhash3-rust streaming: 4328ms 
 twoxhash oneshot 2637ms

7397951705474755165: For 242 datalen and 100000000 iterations: 
 xxhash3-rust oneshot: 3725ms 
 xxhash3-rust streaming: 4276ms 
 twoxhash oneshot 2570ms

P.S. I removed Sip hasher because no one really cares about it

P.S.S. Note that SIMD instructions make difference only starting from length 240+ and in this case you should enable at least AVX2 via RUSTFLAGS as I mentioned above for optimal performance on x86 (if your CPU supports it)

@DoumanAsh DoumanAsh changed the title Sub-par performance comparing against the other twox implementation. Performance comparing against the other twox implementation? Dec 19, 2024
@parthpatel
Copy link
Author

Yeah, I had added variable "a" to prevent compiler from optimizing the code away. The println! for a disappeared in this version during refactoring. Added it back and re-ran the test with and without AVX2. Also changed the output format to make it easy to read:

println!(
            "| {} | {} | {}ms | {}ms | {}ms | {}ms | {} |", data_len, total,
            siphasher_then, xxh3_64_oneshot_then, xxh3_64_streaming_then, twox_oneshot_then, a
        );
Results without AVX2 with native configuration

| datalen | repetitions| sip_hasher | xxhash3-rust oneshot | xxhash3-rust streaming | twoxhash oneshot |
| 0 | 10000000 | 212ms | 102ms | 397ms | 103ms | 8298275007133604248 |
| 1 | 10000000 | 231ms | 119ms | 905ms | 126ms | 13601609971421455266 |
| 2 | 10000000 | 247ms | 119ms | 800ms | 126ms | 1887935205432985883 |
| 3 | 10000000 | 255ms | 120ms | 816ms | 126ms | 3275845382891109914 |
| 4 | 10000000 | 246ms | 140ms | 811ms | 119ms | 14536614532359010061 |
| 5 | 10000000 | 262ms | 140ms | 811ms | 119ms | 3472938494393156783 |
| 6 | 10000000 | 274ms | 140ms | 819ms | 119ms | 2238267920501842754 |
| 7 | 10000000 | 283ms | 140ms | 829ms | 119ms | 13719580452894270217 |
| 8 | 10000000 | 276ms | 140ms | 872ms | 120ms | 15289946537910785011 |
| 9 | 10000000 | 291ms | 154ms | 736ms | 123ms | 4094285932476663240 |
| 10 | 10000000 | 289ms | 153ms | 736ms | 123ms | 13652940222944995450 |
| 11 | 10000000 | 301ms | 153ms | 738ms | 122ms | 14916085140456529167 |
| 12 | 10000000 | 290ms | 153ms | 744ms | 123ms | 16248963971114417031 |
| 13 | 10000000 | 312ms | 154ms | 753ms | 123ms | 6772655885121301511 |
| 14 | 10000000 | 312ms | 153ms | 755ms | 122ms | 9983157521280111382 |
| 15 | 10000000 | 324ms | 154ms | 755ms | 123ms | 785903105248505250 |
| 16 | 10000000 | 311ms | 153ms | 900ms | 123ms | 6913000108646395403 |
| 17 | 10000000 | 338ms | 222ms | 914ms | 132ms | 5373604200902526399 |
| 18 | 10000000 | 336ms | 223ms | 908ms | 132ms | 12080483262875749472 |
| 19 | 10000000 | 345ms | 222ms | 905ms | 132ms | 16823264760027741259 |
| 20 | 10000000 | 331ms | 223ms | 906ms | 132ms | 6753402634499664701 |
| 21 | 10000000 | 355ms | 224ms | 915ms | 133ms | 18316766453862598537 |
| 22 | 10000000 | 356ms | 223ms | 916ms | 133ms | 7435815955188839812 |
| 23 | 10000000 | 364ms | 224ms | 922ms | 133ms | 6188119192593582384 |
| 24 | 10000000 | 355ms | 224ms | 918ms | 133ms | 15940464045804729654 |
| 25 | 10000000 | 374ms | 223ms | 919ms | 133ms | 11223230254036880426 |
| 26 | 10000000 | 376ms | 223ms | 910ms | 133ms | 18195298850363103174 |
| 27 | 10000000 | 384ms | 223ms | 923ms | 133ms | 3191251025672305664 |
| 28 | 10000000 | 371ms | 223ms | 902ms | 133ms | 17019270904041404146 |
| 29 | 10000000 | 394ms | 223ms | 917ms | 133ms | 15729176577768648682 |
| 30 | 10000000 | 394ms | 223ms | 929ms | 133ms | 1378325543482595592 |
| 31 | 10000000 | 403ms | 223ms | 929ms | 133ms | 14585972186283363406 |
| 32 | 10000000 | 394ms | 223ms | 788ms | 133ms | 14858705097695621369 |
| 33 | 10000000 | 416ms | 367ms | 845ms | 162ms | 2782371389490233251 |
| 34 | 10000000 | 414ms | 366ms | 844ms | 162ms | 17710087960560713370 |
| 35 | 10000000 | 423ms | 367ms | 855ms | 162ms | 4186909050607411591 |
| 36 | 10000000 | 411ms | 367ms | 832ms | 162ms | 14933374738709973125 |
| 37 | 10000000 | 434ms | 367ms | 849ms | 162ms | 3602507247556539700 |
| 38 | 10000000 | 434ms | 367ms | 848ms | 161ms | 16548961753187520550 |
| 39 | 10000000 | 444ms | 367ms | 857ms | 161ms | 6457091098575717833 |
| 40 | 10000000 | 434ms | 367ms | 838ms | 161ms | 12060294972988203711 |
| 41 | 10000000 | 454ms | 367ms | 864ms | 162ms | 8435791675317030940 |
| 42 | 10000000 | 454ms | 367ms | 850ms | 162ms | 10086674246949250250 |
| 43 | 10000000 | 463ms | 367ms | 854ms | 161ms | 1149823733055718516 |
| 44 | 10000000 | 451ms | 367ms | 854ms | 161ms | 7669611589257181006 |
| 45 | 10000000 | 473ms | 367ms | 856ms | 162ms | 8010816199059088041 |
| 46 | 10000000 | 474ms | 366ms | 858ms | 162ms | 13041769951655253177 |
| 47 | 10000000 | 483ms | 367ms | 871ms | 161ms | 12921740612213815602 |
| 48 | 10000000 | 473ms | 367ms | 840ms | 162ms | 1817955448059197589 |
| 49 | 10000000 | 494ms | 367ms | 871ms | 161ms | 3097481874878082943 |
| 50 | 10000000 | 494ms | 367ms | 871ms | 161ms | 5335200177244067974 |
| 51 | 10000000 | 503ms | 367ms | 878ms | 161ms | 1503432433123079342 |
| 52 | 10000000 | 491ms | 367ms | 873ms | 162ms | 16644950968960818180 |
| 53 | 10000000 | 513ms | 366ms | 879ms | 162ms | 13035546406914050247 |
| 54 | 10000000 | 515ms | 367ms | 880ms | 163ms | 16467106905134716487 |
| 55 | 10000000 | 529ms | 372ms | 902ms | 164ms | 15253962573603094879 |
| 56 | 10000000 | 518ms | 371ms | 897ms | 164ms | 792131678479414804 |
| 57 | 10000000 | 539ms | 371ms | 895ms | 164ms | 6906799725682788409 |
| 58 | 10000000 | 540ms | 372ms | 916ms | 164ms | 6130825997771366777 |
| 59 | 10000000 | 548ms | 371ms | 896ms | 161ms | 9888810702394939038 |
| 60 | 10000000 | 532ms | 367ms | 903ms | 162ms | 6008408149908067572 |
| 61 | 10000000 | 554ms | 367ms | 906ms | 161ms | 2397996037660562974 |
| 62 | 10000000 | 556ms | 367ms | 904ms | 162ms | 5000360104894435484 |
| 63 | 10000000 | 564ms | 366ms | 894ms | 162ms | 11540763562068101268 |
| 64 | 10000000 | 554ms | 367ms | 906ms | 162ms | 17355926076978200928 |
| 65 | 10000000 | 575ms | 512ms | 900ms | 188ms | 2387191059571330869 |
| 66 | 10000000 | 575ms | 512ms | 900ms | 188ms | 14581367724384960026 |
| 67 | 10000000 | 584ms | 511ms | 904ms | 188ms | 18289330990415501822 |
| 68 | 10000000 | 573ms | 511ms | 910ms | 187ms | 2247420268662709943 |
| 69 | 10000000 | 594ms | 511ms | 914ms | 188ms | 11135140457766926652 |
| 70 | 10000000 | 596ms | 512ms | 921ms | 188ms | 7344335390719323297 |
| 71 | 10000000 | 605ms | 512ms | 930ms | 188ms | 2821844098085665002 |
| 72 | 10000000 | 595ms | 511ms | 921ms | 188ms | 2262888502995611689 |
| 73 | 10000000 | 615ms | 511ms | 937ms | 188ms | 5483518601300195761 |
| 74 | 10000000 | 616ms | 511ms | 939ms | 188ms | 9914604327275092121 |
| 75 | 10000000 | 624ms | 511ms | 949ms | 188ms | 6745753778571516061 |
| 76 | 10000000 | 613ms | 511ms | 949ms | 188ms | 9178520094084415783 |
| 77 | 10000000 | 635ms | 511ms | 965ms | 188ms | 16550976836319610728 |
| 78 | 10000000 | 637ms | 511ms | 965ms | 188ms | 1240801778702188648 |
| 79 | 10000000 | 645ms | 512ms | 972ms | 187ms | 857592002510125164 |
| 80 | 10000000 | 635ms | 511ms | 973ms | 188ms | 17346328565910638646 |
| 81 | 10000000 | 656ms | 511ms | 969ms | 188ms | 12904456861976338350 |
| 82 | 10000000 | 656ms | 510ms | 975ms | 188ms | 4331493575326140858 |
| 83 | 10000000 | 664ms | 511ms | 980ms | 188ms | 17679191262976087775 |
| 84 | 10000000 | 654ms | 511ms | 970ms | 188ms | 10926842486949518195 |
| 85 | 10000000 | 676ms | 510ms | 976ms | 188ms | 2882113340856911432 |
| 86 | 10000000 | 678ms | 511ms | 979ms | 188ms | 12774886639041315756 |
| 87 | 10000000 | 686ms | 511ms | 989ms | 188ms | 12443772292128529928 |
| 88 | 10000000 | 676ms | 511ms | 973ms | 188ms | 2190621276754015599 |
| 89 | 10000000 | 696ms | 510ms | 1000ms | 188ms | 12465441719557175495 |
| 90 | 10000000 | 697ms | 510ms | 1007ms | 188ms | 1581095379218930820 |
| 91 | 10000000 | 705ms | 512ms | 997ms | 188ms | 15468276467832759525 |
| 92 | 10000000 | 694ms | 511ms | 1004ms | 188ms | 4615707757537223277 |
| 93 | 10000000 | 716ms | 511ms | 1009ms | 188ms | 7377483054022805359 |
| 94 | 10000000 | 718ms | 511ms | 1021ms | 187ms | 10736887939706020414 |
| 95 | 10000000 | 726ms | 511ms | 1016ms | 188ms | 1207666335649859476 |
| 96 | 10000000 | 716ms | 520ms | 981ms | 187ms | 1937225068461989056 |
| 97 | 10000000 | 737ms | 656ms | 1033ms | 207ms | 9884900121568280046 |
| 98 | 10000000 | 738ms | 656ms | 1036ms | 207ms | 16505497516317642021 |
| 99 | 10000000 | 745ms | 655ms | 1040ms | 207ms | 11254998943870468873 |
| 100 | 10000000 | 735ms | 656ms | 1018ms | 207ms | 3102290766945377515 |
| 101 | 10000000 | 756ms | 656ms | 1029ms | 207ms | 10037511047781712580 |
| 102 | 10000000 | 759ms | 656ms | 1045ms | 207ms | 9957521251735924912 |
| 103 | 10000000 | 767ms | 656ms | 1040ms | 207ms | 8407803839733234350 |
| 104 | 10000000 | 757ms | 656ms | 1051ms | 207ms | 13635464455318320386 |
| 105 | 10000000 | 777ms | 656ms | 1049ms | 207ms | 15010651764920865431 |
| 106 | 10000000 | 778ms | 656ms | 1047ms | 207ms | 5478705673129747908 |
| 107 | 10000000 | 786ms | 656ms | 1047ms | 207ms | 5115455342678574513 |
| 108 | 10000000 | 776ms | 656ms | 1076ms | 207ms | 15096240737927939022 |
| 109 | 10000000 | 797ms | 656ms | 1056ms | 207ms | 698947819953365508 |
| 110 | 10000000 | 800ms | 656ms | 1075ms | 207ms | 7518132902096932410 |
| 111 | 10000000 | 807ms | 656ms | 1078ms | 207ms | 966938129982351078 |
| 112 | 10000000 | 798ms | 656ms | 1064ms | 207ms | 11025287233836720784 |
| 113 | 10000000 | 818ms | 656ms | 1111ms | 207ms | 4405375842142162452 |
| 114 | 10000000 | 819ms | 656ms | 1084ms | 207ms | 15130702955486440592 |
| 115 | 10000000 | 826ms | 656ms | 1081ms | 207ms | 6954744209656743741 |
| 116 | 10000000 | 817ms | 656ms | 1087ms | 207ms | 7573987911972865454 |
| 117 | 10000000 | 837ms | 656ms | 1100ms | 207ms | 13940526915147618265 |
| 118 | 10000000 | 840ms | 656ms | 1098ms | 207ms | 839121047805611264 |
| 119 | 10000000 | 848ms | 656ms | 1111ms | 207ms | 9921358642925793032 |
| 120 | 10000000 | 838ms | 656ms | 1111ms | 207ms | 6071838903074032591 |
| 121 | 10000000 | 858ms | 656ms | 1106ms | 207ms | 4717056043292631064 |
| 122 | 10000000 | 860ms | 656ms | 1105ms | 207ms | 10633134584640214970 |
| 123 | 10000000 | 866ms | 655ms | 1118ms | 207ms | 8471422481221097984 |
| 124 | 10000000 | 856ms | 656ms | 1113ms | 207ms | 13617420369304744310 |
| 125 | 10000000 | 878ms | 656ms | 1107ms | 207ms | 12742178612440179134 |
| 126 | 10000000 | 881ms | 656ms | 1120ms | 207ms | 15488780579298650610 |
| 127 | 10000000 | 888ms | 656ms | 1123ms | 207ms | 7361571480380480797 |
| 128 | 10000000 | 878ms | 656ms | 1211ms | 207ms | 12601251942351825504 |
| 129 | 10000000 | 900ms | 754ms | 1196ms | 219ms | 6887825804080032374 |
| 130 | 10000000 | 900ms | 753ms | 1161ms | 215ms | 3190054011351864692 |
| 131 | 10000000 | 907ms | 754ms | 1182ms | 215ms | 4587147099790025670 |
| 132 | 10000000 | 898ms | 753ms | 1177ms | 216ms | 16328722268584656334 |
| 133 | 10000000 | 918ms | 752ms | 1183ms | 216ms | 4297743496755056634 |
| 134 | 10000000 | 922ms | 753ms | 1205ms | 215ms | 16606082063845629914 |
| 135 | 10000000 | 929ms | 754ms | 1216ms | 215ms | 1281359315058434741 |
| 136 | 10000000 | 919ms | 753ms | 1222ms | 215ms | 1242866720504660117 |
| 137 | 10000000 | 938ms | 753ms | 1198ms | 215ms | 13379234382140338277 |
| 138 | 10000000 | 942ms | 754ms | 1213ms | 216ms | 8889430558740576720 |
| 139 | 10000000 | 948ms | 755ms | 1217ms | 216ms | 16398581904618203167 |
| 140 | 10000000 | 939ms | 754ms | 1258ms | 215ms | 2025600502707384086 |
| 141 | 10000000 | 958ms | 754ms | 1235ms | 215ms | 3218847785502580353 |
| 142 | 10000000 | 963ms | 754ms | 1262ms | 215ms | 9497170001053659000 |
| 143 | 10000000 | 969ms | 753ms | 1229ms | 215ms | 16597807588753740228 |
| 144 | 10000000 | 960ms | 842ms | 1189ms | 237ms | 16342035530348404322 |
| 145 | 10000000 | 981ms | 842ms | 1251ms | 237ms | 9831558055331747703 |
| 146 | 10000000 | 982ms | 842ms | 1282ms | 237ms | 18289185869073205832 |
| 147 | 10000000 | 987ms | 843ms | 1260ms | 237ms | 9272055977070589300 |
| 148 | 10000000 | 979ms | 842ms | 1287ms | 237ms | 8647471737805679891 |
| 149 | 10000000 | 999ms | 842ms | 1255ms | 237ms | 616275861872563043 |
| 150 | 10000000 | 1003ms | 842ms | 1255ms | 237ms | 9866999239321877867 |
| 151 | 10000000 | 1010ms | 842ms | 1264ms | 237ms | 2582976895648563778 |
| 152 | 10000000 | 1000ms | 842ms | 1295ms | 237ms | 17755835384808039086 |
| 153 | 10000000 | 1020ms | 841ms | 1298ms | 237ms | 9541690261009823024 |
| 154 | 10000000 | 1022ms | 841ms | 1297ms | 237ms | 8626449491593611841 |
| 155 | 10000000 | 1028ms | 842ms | 1290ms | 237ms | 846804404998834814 |
| 156 | 10000000 | 1019ms | 842ms | 1253ms | 237ms | 9764314307893787506 |
| 157 | 10000000 | 1039ms | 841ms | 1295ms | 237ms | 1712802170597155563 |
| 158 | 10000000 | 1044ms | 842ms | 1290ms | 237ms | 18042989886382492133 |
| 159 | 10000000 | 1050ms | 842ms | 1304ms | 237ms | 16002107444283302389 |
| 160 | 10000000 | 1041ms | 924ms | 1243ms | 264ms | 11394621035265866441 |
| 161 | 10000000 | 1061ms | 923ms | 1305ms | 264ms | 3112397797148550358 |
| 162 | 10000000 | 1063ms | 924ms | 1316ms | 264ms | 3648326923205827010 |
| 163 | 10000000 | 1068ms | 923ms | 1331ms | 264ms | 17789556590065054623 |
| 164 | 10000000 | 1060ms | 924ms | 1328ms | 264ms | 7249772736357100956 |
| 165 | 10000000 | 1080ms | 924ms | 1302ms | 264ms | 10373856995134774040 |
| 166 | 10000000 | 1085ms | 924ms | 1300ms | 264ms | 8584129244188960233 |
| 167 | 10000000 | 1092ms | 924ms | 1337ms | 264ms | 16080289163397371598 |
| 168 | 10000000 | 1081ms | 923ms | 1297ms | 264ms | 12835817939156071538 |
| 169 | 10000000 | 1100ms | 923ms | 1320ms | 264ms | 17057296619590713861 |
| 170 | 10000000 | 1103ms | 924ms | 1312ms | 264ms | 10311623185737402947 |
| 171 | 10000000 | 1108ms | 923ms | 1328ms | 264ms | 3844330367640587112 |
| 172 | 10000000 | 1101ms | 924ms | 1324ms | 264ms | 9955509214923503978 |
| 173 | 10000000 | 1120ms | 925ms | 1320ms | 264ms | 8124603391122248340 |
| 174 | 10000000 | 1125ms | 924ms | 1313ms | 264ms | 8879844038947383787 |
| 175 | 10000000 | 1131ms | 923ms | 1311ms | 264ms | 4091234769414803606 |
| 176 | 10000000 | 1122ms | 1010ms | 1338ms | 275ms | 12242649095617746499 |
| 177 | 10000000 | 1144ms | 1011ms | 1370ms | 275ms | 2344275786654474206 |
| 178 | 10000000 | 1144ms | 1010ms | 1385ms | 276ms | 10256661394551767830 |
| 179 | 10000000 | 1151ms | 1010ms | 1357ms | 275ms | 3363527643148483679 |
| 180 | 10000000 | 1142ms | 1011ms | 1353ms | 275ms | 3840534572622605389 |
| 181 | 10000000 | 1161ms | 1012ms | 1405ms | 276ms | 2073906154483271578 |
| 182 | 10000000 | 1166ms | 1011ms | 1394ms | 275ms | 1169544689103707514 |
| 183 | 10000000 | 1172ms | 1010ms | 1342ms | 276ms | 7992858479808506805 |
| 184 | 10000000 | 1163ms | 1011ms | 1337ms | 275ms | 17075146663643350331 |
| 185 | 10000000 | 1182ms | 1010ms | 1341ms | 276ms | 3979040011777256974 |
| 186 | 10000000 | 1184ms | 1011ms | 1392ms | 275ms | 14200196996454363919 |
| 187 | 10000000 | 1189ms | 1009ms | 1373ms | 276ms | 9539642899806155111 |
| 188 | 10000000 | 1183ms | 1012ms | 1361ms | 275ms | 6552829444384971414 |
| 189 | 10000000 | 1201ms | 1010ms | 1356ms | 276ms | 36675644623441282 |
| 190 | 10000000 | 1207ms | 1011ms | 1357ms | 276ms | 5815298639935312253 |
| 191 | 10000000 | 1212ms | 1010ms | 1365ms | 276ms | 10177417793950102874 |
| 192 | 10000000 | 1202ms | 1095ms | 1388ms | 296ms | 17073833046868026974 |
| 193 | 10000000 | 1226ms | 1096ms | 1369ms | 297ms | 9803458020540143195 |
| 194 | 10000000 | 1225ms | 1096ms | 1362ms | 297ms | 13974388183492204234 |
| 195 | 10000000 | 1230ms | 1095ms | 1369ms | 297ms | 5852409981458568126 |
| 196 | 10000000 | 1223ms | 1096ms | 1431ms | 297ms | 92320116772607700 |
| 197 | 10000000 | 1242ms | 1095ms | 1384ms | 297ms | 8316100145497813551 |
| 198 | 10000000 | 1248ms | 1096ms | 1385ms | 297ms | 4405554632844512684 |
| 199 | 10000000 | 1254ms | 1097ms | 1394ms | 297ms | 13911497593864084956 |
| 200 | 10000000 | 1244ms | 1096ms | 1381ms | 296ms | 9436372833778637988 |
| 201 | 10000000 | 1263ms | 1097ms | 1398ms | 297ms | 3594905208709666562 |
| 202 | 10000000 | 1266ms | 1096ms | 1401ms | 297ms | 14557909919610746045 |
| 203 | 10000000 | 1270ms | 1096ms | 1416ms | 297ms | 2124683704968605623 |
| 204 | 10000000 | 1265ms | 1096ms | 1475ms | 297ms | 16803626919940122790 |
| 205 | 10000000 | 1282ms | 1096ms | 1457ms | 297ms | 11613041511973807273 |
| 206 | 10000000 | 1288ms | 1096ms | 1478ms | 297ms | 9346111691778937222 |
| 207 | 10000000 | 1294ms | 1097ms | 1455ms | 297ms | 8217473844482268182 |
| 208 | 10000000 | 1284ms | 1178ms | 1458ms | 316ms | 1770892270544008551 |
| 209 | 10000000 | 1304ms | 1180ms | 1431ms | 317ms | 14245303015486750181 |
| 210 | 10000000 | 1308ms | 1179ms | 1442ms | 316ms | 10604689756830890667 |
| 211 | 10000000 | 1312ms | 1179ms | 1446ms | 316ms | 8117542216659073726 |
| 212 | 10000000 | 1304ms | 1177ms | 1449ms | 316ms | 13738839621213743895 |
| 213 | 10000000 | 1323ms | 1179ms | 1490ms | 316ms | 12456952277913893222 |
| 214 | 10000000 | 1330ms | 1179ms | 1501ms | 316ms | 3840353798311188869 |
| 215 | 10000000 | 1334ms | 1177ms | 1452ms | 316ms | 4209870423311647293 |
| 216 | 10000000 | 1324ms | 1177ms | 1516ms | 316ms | 15012332713665850680 |
| 217 | 10000000 | 1345ms | 1179ms | 1466ms | 316ms | 16724694181645487424 |
| 218 | 10000000 | 1348ms | 1179ms | 1458ms | 316ms | 6049919976958325762 |
| 219 | 10000000 | 1351ms | 1175ms | 1475ms | 316ms | 3915729979780464436 |
| 220 | 10000000 | 1344ms | 1176ms | 1507ms | 316ms | 7331569180080796378 |
| 221 | 10000000 | 1363ms | 1178ms | 1520ms | 316ms | 9822614754795016559 |
| 222 | 10000000 | 1369ms | 1175ms | 1528ms | 316ms | 16903652779287187758 |
| 223 | 10000000 | 1374ms | 1178ms | 1534ms | 316ms | 64868896068209859 |
| 224 | 10000000 | 1364ms | 1258ms | 1447ms | 328ms | 10408619283795399103 |
| 225 | 10000000 | 1387ms | 1258ms | 1477ms | 328ms | 8582817946572191675 |
| 226 | 10000000 | 1388ms | 1259ms | 1496ms | 328ms | 3432981137498933499 |
| 227 | 10000000 | 1392ms | 1258ms | 1493ms | 328ms | 117212730682162764 |
| 228 | 10000000 | 1386ms | 1259ms | 1485ms | 328ms | 13864467737275123982 |
| 229 | 10000000 | 1404ms | 1258ms | 1503ms | 328ms | 9679832975805331564 |
| 230 | 10000000 | 1410ms | 1258ms | 1514ms | 328ms | 11270141373917145543 |
| 231 | 10000000 | 1416ms | 1258ms | 1560ms | 329ms | 294524715942350762 |
| 232 | 10000000 | 1406ms | 1259ms | 1562ms | 328ms | 10692058783681272581 |
| 233 | 10000000 | 1426ms | 1259ms | 1526ms | 328ms | 15098683513725549171 |
| 234 | 10000000 | 1429ms | 1258ms | 1531ms | 328ms | 13840395195775679528 |
| 235 | 10000000 | 1433ms | 1259ms | 1575ms | 329ms | 8670376541932237903 |
| 236 | 10000000 | 1426ms | 1259ms | 1526ms | 329ms | 18407248246831535853 |
| 237 | 10000000 | 1447ms | 1260ms | 1538ms | 329ms | 7011327518653817786 |
| 238 | 10000000 | 1453ms | 1262ms | 1524ms | 328ms | 12336306718237141234 |
| 239 | 10000000 | 1456ms | 1258ms | 1526ms | 328ms | 11781146510229637523 |
| 240 | 10000000 | 1446ms | 1345ms | 1513ms | 341ms | 12826427230220059681 |
| 241 | 10000000 | 1466ms | 1386ms | 1525ms | 689ms | 8452878488654737552 |
| 242 | 10000000 | 1469ms | 1387ms | 1543ms | 688ms | 18250844968261293306 |
| 243 | 10000000 | 1473ms | 1386ms | 1590ms | 689ms | 13626136301177632215 |
| 244 | 10000000 | 1466ms | 1387ms | 1550ms | 693ms | 11958058756471485964 |
| 245 | 10000000 | 1490ms | 1389ms | 1553ms | 692ms | 16034110315143557784 |
| 246 | 10000000 | 1495ms | 1392ms | 1562ms | 692ms | 13546810505311204818 |
| 247 | 10000000 | 1501ms | 1391ms | 1565ms | 690ms | 7726345081926369864 |
| 248 | 10000000 | 1490ms | 1392ms | 1556ms | 691ms | 9240798295064972314 |
| 249 | 10000000 | 1510ms | 1390ms | 1570ms | 694ms | 8526547835175759783 |
| 250 | 10000000 | 1513ms | 1393ms | 1565ms | 689ms | 1404029809885366303 |
| 251 | 10000000 | 1515ms | 1388ms | 1565ms | 689ms | 7204122526475017924 |
| 252 | 10000000 | 1509ms | 1388ms | 1565ms | 691ms | 6083906045760343788 |
| 253 | 10000000 | 1527ms | 1389ms | 1577ms | 690ms | 13532477982605980043 |
| 254 | 10000000 | 1534ms | 1389ms | 1563ms | 690ms | 6921386126960743949 |
| 511 | 10000000 | 2839ms | 1884ms | 2140ms | 1063ms | 11975493641969890612 |
| 1023 | 10000000 | 5586ms | 2874ms | 3266ms | 1753ms | 7144107082983428557 |
| 2047 | 10000000 | 10792ms | 4974ms | 5519ms | 3223ms | 385839830109348387 |

Results with AVX2 explicitly enabled

| datalen | repetitions| sip_hasher | xxhash3-rust oneshot | xxhash3-rust streaming | twoxhash oneshot |
| 0 | 10000000 | 218ms | 100ms | 200ms | 74ms | 8298275007133604248 |
| 1 | 10000000 | 233ms | 107ms | 533ms | 90ms | 6234664827839009852 |
| 2 | 10000000 | 258ms | 107ms | 538ms | 90ms | 11265049750270494039 |
| 3 | 10000000 | 267ms | 109ms | 543ms | 90ms | 16554543024153096404 |
| 4 | 10000000 | 251ms | 138ms | 544ms | 89ms | 6744818850183756551 |
| 5 | 10000000 | 267ms | 138ms | 553ms | 90ms | 16430666445906792104 |
| 6 | 10000000 | 277ms | 138ms | 552ms | 89ms | 16116833536664480731 |
| 7 | 10000000 | 286ms | 138ms | 557ms | 89ms | 14237956188180388242 |
| 8 | 10000000 | 273ms | 138ms | 543ms | 90ms | 5733606395600930346 |
| 9 | 10000000 | 298ms | 151ms | 555ms | 84ms | 17715016281829700246 |
| 10 | 10000000 | 296ms | 151ms | 558ms | 84ms | 15308460038159864238 |
| 11 | 10000000 | 308ms | 151ms | 558ms | 84ms | 7291881755870668789 |
| 12 | 10000000 | 293ms | 151ms | 549ms | 85ms | 6720013597891288947 |
| 13 | 10000000 | 320ms | 151ms | 554ms | 84ms | 2449817651033187075 |
| 14 | 10000000 | 319ms | 151ms | 556ms | 84ms | 14769363826003627593 |
| 15 | 10000000 | 331ms | 151ms | 557ms | 84ms | 17385978101454791420 |
| 16 | 10000000 | 312ms | 151ms | 548ms | 85ms | 8067466366245379806 |
| 17 | 10000000 | 347ms | 220ms | 564ms | 97ms | 11496173714649423253 |
| 18 | 10000000 | 342ms | 220ms | 566ms | 98ms | 3947803435012391534 |
| 19 | 10000000 | 353ms | 221ms | 571ms | 98ms | 9777364121557985742 |
| 20 | 10000000 | 333ms | 220ms | 564ms | 98ms | 10326527985492291906 |
| 21 | 10000000 | 364ms | 221ms | 569ms | 98ms | 14304627502142376581 |
| 22 | 10000000 | 365ms | 221ms | 573ms | 98ms | 14412560232745260094 |
| 23 | 10000000 | 374ms | 220ms | 577ms | 98ms | 17096328137154874109 |
| 24 | 10000000 | 356ms | 220ms | 571ms | 97ms | 2563842393540248953 |
| 25 | 10000000 | 385ms | 221ms | 577ms | 97ms | 10289744408910529349 |
| 26 | 10000000 | 383ms | 221ms | 576ms | 97ms | 10479634863547504993 |
| 27 | 10000000 | 395ms | 220ms | 586ms | 98ms | 15816313414879166378 |
| 28 | 10000000 | 375ms | 221ms | 581ms | 98ms | 4466621515222373993 |
| 29 | 10000000 | 406ms | 220ms | 586ms | 97ms | 12381035624230103574 |
| 30 | 10000000 | 406ms | 220ms | 586ms | 97ms | 18124918382083193890 |
| 31 | 10000000 | 416ms | 221ms | 586ms | 98ms | 7538560299749259433 |
| 32 | 10000000 | 392ms | 221ms | 570ms | 97ms | 747310676160722026 |
| 33 | 10000000 | 427ms | 362ms | 587ms | 130ms | 13513055487725158636 |
| 34 | 10000000 | 426ms | 363ms | 591ms | 130ms | 4212598269155155579 |
| 35 | 10000000 | 439ms | 363ms | 591ms | 130ms | 11237082238676935253 |
| 36 | 10000000 | 415ms | 362ms | 593ms | 130ms | 14056984273657517231 |
| 37 | 10000000 | 447ms | 363ms | 596ms | 130ms | 14300775089786792302 |
| 38 | 10000000 | 447ms | 363ms | 591ms | 130ms | 6139805848282053254 |
| 39 | 10000000 | 456ms | 363ms | 592ms | 130ms | 15609050121066621420 |
| 40 | 10000000 | 435ms | 367ms | 586ms | 129ms | 13933015053735611342 |
| 41 | 10000000 | 465ms | 363ms | 598ms | 130ms | 15714709679051234205 |
| 42 | 10000000 | 466ms | 363ms | 599ms | 130ms | 11007041132056236407 |
| 43 | 10000000 | 478ms | 362ms | 602ms | 130ms | 7032730690257240346 |
| 44 | 10000000 | 454ms | 363ms | 597ms | 130ms | 4095403576181666547 |
| 45 | 10000000 | 486ms | 363ms | 602ms | 130ms | 8723289797004790955 |
| 46 | 10000000 | 487ms | 362ms | 605ms | 130ms | 2092671796528985460 |
| 47 | 10000000 | 496ms | 363ms | 606ms | 129ms | 5353505785314143870 |
| 48 | 10000000 | 475ms | 362ms | 598ms | 129ms | 8297880492808463196 |
| 49 | 10000000 | 505ms | 363ms | 607ms | 130ms | 7489888925777484640 |
| 50 | 10000000 | 507ms | 363ms | 610ms | 130ms | 3225885204851471829 |
| 51 | 10000000 | 518ms | 362ms | 613ms | 130ms | 6828989831512101418 |
| 52 | 10000000 | 496ms | 362ms | 608ms | 130ms | 12937338414217981944 |
| 53 | 10000000 | 527ms | 363ms | 614ms | 130ms | 1089767207048202050 |
| 54 | 10000000 | 527ms | 362ms | 614ms | 130ms | 9110610170167041825 |
| 55 | 10000000 | 537ms | 363ms | 622ms | 130ms | 10533929032335366198 |
| 56 | 10000000 | 515ms | 364ms | 614ms | 129ms | 6157465016787940418 |
| 57 | 10000000 | 545ms | 362ms | 622ms | 130ms | 1549304525401900658 |
| 58 | 10000000 | 547ms | 362ms | 623ms | 130ms | 3671787425109318367 |
| 59 | 10000000 | 558ms | 363ms | 626ms | 130ms | 13462380101873840491 |
| 60 | 10000000 | 536ms | 363ms | 621ms | 130ms | 16334093385037676148 |
| 61 | 10000000 | 567ms | 362ms | 631ms | 130ms | 9368169311125208937 |
| 62 | 10000000 | 568ms | 363ms | 628ms | 130ms | 10143383612627290756 |
| 63 | 10000000 | 577ms | 363ms | 628ms | 130ms | 13684953640945634006 |
| 64 | 10000000 | 557ms | 363ms | 627ms | 129ms | 18011579450156937682 |
| 65 | 10000000 | 587ms | 514ms | 646ms | 181ms | 812606821474707962 |
| 66 | 10000000 | 587ms | 514ms | 649ms | 181ms | 15108453398562454245 |
| 67 | 10000000 | 599ms | 514ms | 655ms | 181ms | 10874923719543949682 |
| 68 | 10000000 | 577ms | 514ms | 654ms | 181ms | 16110400437540050438 |
| 69 | 10000000 | 608ms | 514ms | 658ms | 181ms | 10907636479778119642 |
| 70 | 10000000 | 608ms | 514ms | 658ms | 181ms | 6834025816400403151 |
| 71 | 10000000 | 618ms | 514ms | 663ms | 181ms | 2399900277720283279 |
| 72 | 10000000 | 597ms | 514ms | 659ms | 179ms | 823974238279896964 |
| 73 | 10000000 | 627ms | 514ms | 669ms | 181ms | 18390202519755535696 |
| 74 | 10000000 | 628ms | 514ms | 665ms | 181ms | 1728598387739949996 |
| 75 | 10000000 | 639ms | 514ms | 667ms | 181ms | 53831892159911472 |
| 76 | 10000000 | 617ms | 514ms | 668ms | 181ms | 2165821661236100130 |
| 77 | 10000000 | 648ms | 514ms | 671ms | 181ms | 8080000760999313936 |
| 78 | 10000000 | 649ms | 514ms | 674ms | 181ms | 15664166562172198947 |
| 79 | 10000000 | 659ms | 514ms | 673ms | 181ms | 18335806193398752887 |
| 80 | 10000000 | 638ms | 514ms | 664ms | 179ms | 13244562297914681309 |
| 81 | 10000000 | 668ms | 514ms | 677ms | 181ms | 12238366301630522103 |
| 82 | 10000000 | 668ms | 514ms | 680ms | 181ms | 104402282399893180 |
| 83 | 10000000 | 680ms | 514ms | 683ms | 181ms | 980524671348868619 |
| 84 | 10000000 | 658ms | 514ms | 678ms | 181ms | 5562878883735289180 |
| 85 | 10000000 | 689ms | 514ms | 678ms | 181ms | 9882080068412654558 |
| 86 | 10000000 | 689ms | 514ms | 683ms | 181ms | 8701417834163634241 |
| 87 | 10000000 | 699ms | 514ms | 689ms | 181ms | 13082374779601354540 |
| 88 | 10000000 | 679ms | 514ms | 679ms | 179ms | 17769702789326156778 |
| 89 | 10000000 | 708ms | 514ms | 693ms | 181ms | 4256459217492229446 |
| 90 | 10000000 | 709ms | 514ms | 694ms | 181ms | 1082993167749270534 |
| 91 | 10000000 | 720ms | 515ms | 696ms | 181ms | 16919792999621037002 |
| 92 | 10000000 | 699ms | 514ms | 694ms | 181ms | 5650279433737994602 |
| 93 | 10000000 | 730ms | 514ms | 696ms | 181ms | 3152215835535330436 |
| 94 | 10000000 | 730ms | 514ms | 700ms | 181ms | 6165125692610449371 |
| 95 | 10000000 | 740ms | 514ms | 700ms | 181ms | 15853929274633026975 |
| 96 | 10000000 | 720ms | 514ms | 692ms | 179ms | 3635185638430811187 |
| 97 | 10000000 | 752ms | 658ms | 703ms | 195ms | 10881371651058744069 |
| 98 | 10000000 | 750ms | 658ms | 707ms | 195ms | 9850874003152928696 |
| 99 | 10000000 | 761ms | 658ms | 709ms | 195ms | 5545242401534051065 |
| 100 | 10000000 | 740ms | 658ms | 707ms | 195ms | 13436012313765687709 |
| 101 | 10000000 | 770ms | 658ms | 710ms | 195ms | 4159933492337201870 |
| 102 | 10000000 | 770ms | 657ms | 715ms | 195ms | 2906155498350121171 |
| 103 | 10000000 | 782ms | 658ms | 714ms | 195ms | 8760007410348903540 |
| 104 | 10000000 | 761ms | 658ms | 709ms | 192ms | 3825526221878097416 |
| 105 | 10000000 | 791ms | 658ms | 720ms | 195ms | 8679191686617269473 |
| 106 | 10000000 | 790ms | 658ms | 719ms | 195ms | 18005849092171808534 |
| 107 | 10000000 | 802ms | 658ms | 722ms | 195ms | 10760283606644427863 |
| 108 | 10000000 | 780ms | 658ms | 726ms | 195ms | 6020494362990691044 |
| 109 | 10000000 | 811ms | 658ms | 725ms | 195ms | 3076517566455479586 |
| 110 | 10000000 | 811ms | 658ms | 729ms | 195ms | 6724930745296203094 |
| 111 | 10000000 | 823ms | 657ms | 730ms | 195ms | 7946173620130249176 |
| 112 | 10000000 | 802ms | 658ms | 720ms | 192ms | 14691004289171653250 |
| 113 | 10000000 | 833ms | 658ms | 735ms | 195ms | 12471299539047619471 |
| 114 | 10000000 | 831ms | 657ms | 737ms | 195ms | 1855715338296860002 |
| 115 | 10000000 | 843ms | 658ms | 742ms | 195ms | 18340343713003126075 |
| 116 | 10000000 | 821ms | 658ms | 738ms | 195ms | 8481818567062000628 |
| 117 | 10000000 | 852ms | 658ms | 744ms | 195ms | 3920687498213587301 |
| 118 | 10000000 | 852ms | 658ms | 750ms | 195ms | 12239542617219197692 |
| 119 | 10000000 | 864ms | 658ms | 748ms | 195ms | 3836943719303143595 |
| 120 | 10000000 | 843ms | 658ms | 738ms | 192ms | 10463789173999563724 |
| 121 | 10000000 | 873ms | 658ms | 747ms | 195ms | 5561493281115628242 |
| 122 | 10000000 | 872ms | 658ms | 752ms | 195ms | 7733332034272659340 |
| 123 | 10000000 | 883ms | 658ms | 756ms | 195ms | 9709198149487473582 |
| 124 | 10000000 | 863ms | 658ms | 750ms | 195ms | 653328917278581465 |
| 125 | 10000000 | 894ms | 658ms | 755ms | 195ms | 15913704890765238872 |
| 126 | 10000000 | 893ms | 658ms | 754ms | 195ms | 6609210661420507660 |
| 127 | 10000000 | 904ms | 657ms | 754ms | 195ms | 2717490513441796832 |
| 128 | 10000000 | 883ms | 658ms | 802ms | 192ms | 3317682532255697380 |
| 129 | 10000000 | 917ms | 718ms | 763ms | 204ms | 16881926521442335185 |
| 130 | 10000000 | 913ms | 717ms | 766ms | 202ms | 12028868412791487744 |
| 131 | 10000000 | 924ms | 718ms | 772ms | 202ms | 13577859600543908020 |
| 132 | 10000000 | 903ms | 718ms | 768ms | 202ms | 9918436970820420197 |
| 133 | 10000000 | 934ms | 718ms | 778ms | 202ms | 8748065011738313847 |
| 134 | 10000000 | 934ms | 717ms | 779ms | 202ms | 5583430469174573870 |
| 135 | 10000000 | 945ms | 718ms | 777ms | 202ms | 10911128721906239647 |
| 136 | 10000000 | 925ms | 717ms | 771ms | 202ms | 7920473187398758452 |
| 137 | 10000000 | 954ms | 717ms | 785ms | 202ms | 8278937019610408691 |
| 138 | 10000000 | 954ms | 717ms | 788ms | 202ms | 3196370573394763402 |
| 139 | 10000000 | 965ms | 717ms | 789ms | 202ms | 7755941969509285674 |
| 140 | 10000000 | 944ms | 718ms | 789ms | 202ms | 1476786449964177017 |
| 141 | 10000000 | 983ms | 718ms | 794ms | 202ms | 9399582967243410623 |
| 142 | 10000000 | 975ms | 717ms | 791ms | 202ms | 16949813418138943345 |
| 143 | 10000000 | 986ms | 717ms | 791ms | 202ms | 5632497312056107385 |
| 144 | 10000000 | 966ms | 792ms | 782ms | 227ms | 8458815131730602591 |
| 145 | 10000000 | 996ms | 792ms | 797ms | 227ms | 3859437948719947533 |
| 146 | 10000000 | 995ms | 792ms | 798ms | 227ms | 18093850205644370337 |
| 147 | 10000000 | 1006ms | 792ms | 804ms | 227ms | 11673181613064301189 |
| 148 | 10000000 | 985ms | 792ms | 799ms | 227ms | 14161668658224419196 |
| 149 | 10000000 | 1016ms | 792ms | 802ms | 227ms | 14921961739463922833 |
| 150 | 10000000 | 1015ms | 792ms | 803ms | 227ms | 11873544913134129180 |
| 151 | 10000000 | 1026ms | 792ms | 807ms | 227ms | 3626944286943815121 |
| 152 | 10000000 | 1007ms | 792ms | 796ms | 227ms | 4661891903497434464 |
| 153 | 10000000 | 1036ms | 792ms | 814ms | 227ms | 9513881188794041685 |
| 154 | 10000000 | 1063ms | 792ms | 815ms | 227ms | 7085149837212699185 |
| 155 | 10000000 | 1047ms | 793ms | 816ms | 227ms | 600826982701027807 |
| 156 | 10000000 | 1026ms | 792ms | 815ms | 227ms | 8073971503742566300 |
| 157 | 10000000 | 1057ms | 792ms | 821ms | 227ms | 16614335896263756207 |
| 158 | 10000000 | 1056ms | 792ms | 821ms | 227ms | 2505308306014298140 |
| 159 | 10000000 | 1067ms | 792ms | 819ms | 227ms | 12910759087718542347 |
| 160 | 10000000 | 1047ms | 853ms | 812ms | 242ms | 16254136869573683328 |
| 161 | 10000000 | 1085ms | 853ms | 824ms | 242ms | 263192445446430181 |
| 162 | 10000000 | 1077ms | 853ms | 828ms | 242ms | 5745403123166103583 |
| 163 | 10000000 | 1088ms | 853ms | 830ms | 242ms | 17536505657087976205 |
| 164 | 10000000 | 1067ms | 852ms | 827ms | 242ms | 5178794210298024120 |
| 165 | 10000000 | 1097ms | 853ms | 830ms | 242ms | 17718166340089417724 |
| 166 | 10000000 | 1097ms | 853ms | 835ms | 242ms | 7854908214434906566 |
| 167 | 10000000 | 1108ms | 854ms | 835ms | 242ms | 10574650153504454537 |
| 168 | 10000000 | 1089ms | 854ms | 824ms | 242ms | 16692797410835744532 |
| 169 | 10000000 | 1118ms | 853ms | 842ms | 242ms | 17546514978946773052 |
| 170 | 10000000 | 1119ms | 854ms | 838ms | 242ms | 11228339387557812799 |
| 171 | 10000000 | 1129ms | 853ms | 837ms | 243ms | 18171665882266882485 |
| 172 | 10000000 | 1108ms | 854ms | 844ms | 242ms | 2843777382113020405 |
| 173 | 10000000 | 1139ms | 853ms | 848ms | 242ms | 1921050176081895779 |
| 174 | 10000000 | 1138ms | 854ms | 847ms | 242ms | 2913824484691155930 |
| 175 | 10000000 | 1149ms | 854ms | 849ms | 242ms | 17247210399747582797 |
| 176 | 10000000 | 1129ms | 925ms | 837ms | 259ms | 1757543244230971171 |
| 177 | 10000000 | 1161ms | 924ms | 852ms | 259ms | 12682049267949899044 |
| 178 | 10000000 | 1158ms | 924ms | 854ms | 259ms | 14541095033640374360 |
| 179 | 10000000 | 1169ms | 924ms | 861ms | 259ms | 7753386383237172538 |
| 180 | 10000000 | 1149ms | 925ms | 856ms | 259ms | 3467465909748886897 |
| 181 | 10000000 | 1180ms | 925ms | 861ms | 259ms | 5084077399189443583 |
| 182 | 10000000 | 1180ms | 925ms | 862ms | 259ms | 5457292909505931114 |
| 183 | 10000000 | 1190ms | 925ms | 868ms | 259ms | 8333670381131335075 |
| 184 | 10000000 | 1170ms | 924ms | 856ms | 259ms | 9478945463536509933 |
| 185 | 10000000 | 1202ms | 924ms | 869ms | 259ms | 15963022154013820545 |
| 186 | 10000000 | 1199ms | 925ms | 869ms | 259ms | 7410772728293694180 |
| 187 | 10000000 | 1211ms | 923ms | 872ms | 259ms | 15853667191974986961 |
| 188 | 10000000 | 1189ms | 924ms | 873ms | 259ms | 5251246883253036150 |
| 189 | 10000000 | 1224ms | 924ms | 877ms | 259ms | 8606856363849876224 |
| 190 | 10000000 | 1220ms | 924ms | 875ms | 259ms | 3451408816146752986 |
| 191 | 10000000 | 1231ms | 923ms | 875ms | 259ms | 4085052710423050572 |
| 192 | 10000000 | 1211ms | 1001ms | 866ms | 311ms | 1668825119694139724 |
| 193 | 10000000 | 1243ms | 1001ms | 878ms | 312ms | 6696908349328480985 |
| 194 | 10000000 | 1240ms | 1001ms | 881ms | 312ms | 10197877041367134116 |
| 195 | 10000000 | 1251ms | 1000ms | 880ms | 312ms | 12133504002515253550 |
| 196 | 10000000 | 1231ms | 1001ms | 879ms | 312ms | 2476372496991752400 |
| 197 | 10000000 | 1262ms | 1001ms | 888ms | 312ms | 12950154340494075734 |
| 198 | 10000000 | 1261ms | 1001ms | 891ms | 312ms | 12956568264526658631 |
| 199 | 10000000 | 1272ms | 1001ms | 892ms | 312ms | 5235131763390112470 |
| 200 | 10000000 | 1252ms | 1001ms | 883ms | 311ms | 8826497993009404158 |
| 201 | 10000000 | 1281ms | 1000ms | 895ms | 312ms | 17662445362894051489 |
| 202 | 10000000 | 1281ms | 1000ms | 897ms | 312ms | 17416873692848612928 |
| 203 | 10000000 | 1292ms | 1000ms | 896ms | 312ms | 12564192766322603492 |
| 204 | 10000000 | 1271ms | 1000ms | 908ms | 312ms | 3635915972063593549 |
| 205 | 10000000 | 1302ms | 1001ms | 903ms | 312ms | 680776553891453204 |
| 206 | 10000000 | 1302ms | 1001ms | 900ms | 312ms | 13888583329308397993 |
| 207 | 10000000 | 1313ms | 1001ms | 899ms | 312ms | 14251988496464371226 |
| 208 | 10000000 | 1294ms | 1065ms | 889ms | 319ms | 17462627155041180280 |
| 209 | 10000000 | 1323ms | 1064ms | 903ms | 319ms | 2891922951992627385 |
| 210 | 10000000 | 1322ms | 1065ms | 906ms | 319ms | 5248862183213517629 |
| 211 | 10000000 | 1333ms | 1065ms | 911ms | 319ms | 8999931061669147840 |
| 212 | 10000000 | 1312ms | 1065ms | 909ms | 319ms | 11295571888529137281 |
| 213 | 10000000 | 1343ms | 1064ms | 911ms | 319ms | 4947065783264950835 |
| 214 | 10000000 | 1343ms | 1065ms | 910ms | 319ms | 16680374185218909617 |
| 215 | 10000000 | 1354ms | 1064ms | 914ms | 319ms | 8128603806849745299 |
| 216 | 10000000 | 1334ms | 1066ms | 907ms | 319ms | 1326668799565865339 |
| 217 | 10000000 | 1363ms | 1065ms | 919ms | 319ms | 17939475937335174428 |
| 218 | 10000000 | 1363ms | 1064ms | 918ms | 319ms | 14778279196981506578 |
| 219 | 10000000 | 1374ms | 1065ms | 923ms | 319ms | 7297928668846151687 |
| 220 | 10000000 | 1353ms | 1065ms | 921ms | 319ms | 9714270066385163840 |
| 221 | 10000000 | 1384ms | 1074ms | 924ms | 319ms | 13851569573038161442 |
| 222 | 10000000 | 1384ms | 1066ms | 922ms | 319ms | 9090418579774070407 |
| 223 | 10000000 | 1395ms | 1064ms | 923ms | 319ms | 2277567337556624662 |
| 224 | 10000000 | 1375ms | 1131ms | 910ms | 331ms | 17372489756579139407 |
| 225 | 10000000 | 1406ms | 1130ms | 926ms | 331ms | 13337741919711792290 |
| 226 | 10000000 | 1404ms | 1130ms | 927ms | 331ms | 6773168500726182148 |
| 227 | 10000000 | 1415ms | 1130ms | 932ms | 331ms | 6633849604406399425 |
| 228 | 10000000 | 1394ms | 1129ms | 930ms | 331ms | 7719598252609637380 |
| 229 | 10000000 | 1425ms | 1129ms | 937ms | 331ms | 8316131795701618747 |
| 230 | 10000000 | 1425ms | 1130ms | 940ms | 331ms | 8094732829817541569 |
| 231 | 10000000 | 1436ms | 1131ms | 937ms | 331ms | 5462805402383632901 |
| 232 | 10000000 | 1416ms | 1131ms | 928ms | 331ms | 9184041580518125149 |
| 233 | 10000000 | 1445ms | 1130ms | 937ms | 331ms | 4090656692038639742 |
| 234 | 10000000 | 1444ms | 1130ms | 936ms | 331ms | 1096690489250791142 |
| 235 | 10000000 | 1455ms | 1130ms | 935ms | 331ms | 11922534369510692873 |
| 236 | 10000000 | 1435ms | 1130ms | 935ms | 331ms | 6180996589919702937 |
| 237 | 10000000 | 1466ms | 1130ms | 941ms | 331ms | 9049637847693967844 |
| 238 | 10000000 | 1465ms | 1130ms | 945ms | 331ms | 154780870837513002 |
| 239 | 10000000 | 1477ms | 1129ms | 947ms | 331ms | 167135484111331015 |
| 240 | 10000000 | 1457ms | 1197ms | 932ms | 344ms | 7153218487800806935 |
| 241 | 10000000 | 1486ms | 1181ms | 946ms | 529ms | 8672639900290096969 |
| 242 | 10000000 | 1485ms | 1181ms | 949ms | 529ms | 18127560124283890546 |
| 243 | 10000000 | 1497ms | 1180ms | 955ms | 529ms | 7304768391568844410 |
| 244 | 10000000 | 1476ms | 1180ms | 949ms | 529ms | 7475372751506865145 |
| 245 | 10000000 | 1507ms | 1181ms | 952ms | 529ms | 14712304336792128801 |
| 246 | 10000000 | 1506ms | 1180ms | 952ms | 529ms | 5207689569328327534 |
| 247 | 10000000 | 1518ms | 1181ms | 955ms | 529ms | 4359499770199934318 |
| 248 | 10000000 | 1498ms | 1180ms | 951ms | 529ms | 3714469618125019897 |
| 249 | 10000000 | 1527ms | 1180ms | 957ms | 529ms | 5495352470375102714 |
| 250 | 10000000 | 1526ms | 1180ms | 957ms | 529ms | 4352223319105441848 |
| 251 | 10000000 | 1538ms | 1181ms | 957ms | 530ms | 14681093885810969601 |
| 252 | 10000000 | 1517ms | 1180ms | 959ms | 529ms | 10111393271070292496 |
| 253 | 10000000 | 1548ms | 1181ms | 959ms | 529ms | 11539827854158819892 |
| 254 | 10000000 | 1547ms | 1181ms | 959ms | 529ms | 3414350621757791947 |
| 511 | 10000000 | 2871ms | 1433ms | 1335ms | 870ms | 4213940515366673595 |
| 1023 | 10000000 | 5672ms | 1931ms | 2008ms | 1568ms | 7378643222261393635 |
| 2047 | 10000000 | 10980ms | 3062ms | 3352ms | 2965ms | 11454269446820764124 |

@parthpatel
Copy link
Author

I ran another test with LTO enabled and AVX2 enabled. Previous tests only had opt-level=3. This is still on the linux machine - "x86_64 GNU/Linux"

[profile.dev]
lto = true
opt-level = 3
incremental = false
codegen-units = 1
 datalen | repetitions| sip_hasher | xxhash3-rust oneshot | xxhash3-rust streaming | twoxhash oneshot |
| 0 | 10000000 | 214ms | 92ms | 164ms | 71ms | 8298275007133604248 |
| 1 | 10000000 | 240ms | 113ms | 489ms | 90ms | 17458220944352452262 |
| 2 | 10000000 | 251ms | 113ms | 492ms | 89ms | 17502811362976820199 |
| 3 | 10000000 | 259ms | 113ms | 498ms | 91ms | 14777023875246018117 |
| 4 | 10000000 | 249ms | 126ms | 497ms | 87ms | 5319122197541687195 |
| 5 | 10000000 | 264ms | 126ms | 506ms | 87ms | 8605109500987177627 |
| 6 | 10000000 | 273ms | 126ms | 507ms | 87ms | 14635045107653879326 |
| 7 | 10000000 | 283ms | 126ms | 513ms | 87ms | 4878730401070688778 |
| 8 | 10000000 | 278ms | 126ms | 500ms | 87ms | 9633651920488289558 |
| 9 | 10000000 | 292ms | 138ms | 510ms | 81ms | 15674969977713938038 |
| 10 | 10000000 | 292ms | 138ms | 499ms | 81ms | 16515471280690469504 |
| 11 | 10000000 | 303ms | 139ms | 498ms | 81ms | 14876421794032750665 |
| 12 | 10000000 | 292ms | 138ms | 496ms | 81ms | 8822512063304645077 |
| 13 | 10000000 | 315ms | 138ms | 504ms | 81ms | 1679427243640430259 |
| 14 | 10000000 | 312ms | 139ms | 509ms | 81ms | 9875702240912427114 |
| 15 | 10000000 | 324ms | 138ms | 506ms | 81ms | 15152005524135601931 |
| 16 | 10000000 | 312ms | 138ms | 495ms | 81ms | 6185529365713710359 |
| 17 | 10000000 | 341ms | 210ms | 513ms | 94ms | 14932660913509121922 |
| 18 | 10000000 | 337ms | 210ms | 520ms | 94ms | 8094403836932884360 |
| 19 | 10000000 | 347ms | 210ms | 521ms | 94ms | 15817110624971014427 |
| 20 | 10000000 | 332ms | 210ms | 513ms | 94ms | 15718095722268973973 |
| 21 | 10000000 | 358ms | 211ms | 518ms | 94ms | 3876025517538073219 |
| 22 | 10000000 | 356ms | 211ms | 524ms | 94ms | 334133003191022720 |
| 23 | 10000000 | 366ms | 211ms | 527ms | 94ms | 12334999713747518385 |
| 24 | 10000000 | 355ms | 210ms | 516ms | 93ms | 2777294863162026503 |
| 25 | 10000000 | 376ms | 210ms | 523ms | 94ms | 6816333430479231467 |
| 26 | 10000000 | 377ms | 211ms | 527ms | 94ms | 6414468136685222734 |
| 27 | 10000000 | 386ms | 210ms | 534ms | 94ms | 10906200449503645496 |
| 28 | 10000000 | 371ms | 210ms | 531ms | 94ms | 8088411555447150262 |
| 29 | 10000000 | 396ms | 210ms | 535ms | 94ms | 8877421872866207084 |
| 30 | 10000000 | 397ms | 210ms | 534ms | 94ms | 1698936054733834269 |
| 31 | 10000000 | 406ms | 210ms | 535ms | 94ms | 9628823893219494613 |
| 32 | 10000000 | 392ms | 210ms | 514ms | 93ms | 6334036510161414317 |
| 33 | 10000000 | 418ms | 361ms | 532ms | 126ms | 18242606329247583030 |
| 34 | 10000000 | 416ms | 360ms | 538ms | 126ms | 7247925505348337853 |
| 35 | 10000000 | 425ms | 360ms | 541ms | 126ms | 17591942610137874405 |
| 36 | 10000000 | 411ms | 361ms | 534ms | 126ms | 129804589733001779 |
| 37 | 10000000 | 436ms | 361ms | 539ms | 126ms | 1295751440667480908 |
| 38 | 10000000 | 437ms | 361ms | 539ms | 126ms | 129753329279543172 |
| 39 | 10000000 | 447ms | 361ms | 541ms | 126ms | 3474611327756851190 |
| 40 | 10000000 | 435ms | 360ms | 531ms | 126ms | 12386216744976703288 |
| 41 | 10000000 | 457ms | 362ms | 545ms | 126ms | 12085271380703268356 |
| 42 | 10000000 | 456ms | 360ms | 544ms | 126ms | 11936700479256123634 |
| 43 | 10000000 | 466ms | 361ms | 548ms | 126ms | 7561299177741723910 |
| 44 | 10000000 | 452ms | 361ms | 545ms | 126ms | 3203794227762964494 |
| 45 | 10000000 | 476ms | 361ms | 548ms | 126ms | 18135979246839121201 |
| 46 | 10000000 | 477ms | 361ms | 553ms | 126ms | 8685501996197813921 |
| 47 | 10000000 | 486ms | 361ms | 555ms | 126ms | 2680007435912626564 |
| 48 | 10000000 | 474ms | 361ms | 542ms | 126ms | 9007026951424737610 |
| 49 | 10000000 | 498ms | 361ms | 554ms | 126ms | 7826981663721695306 |
| 50 | 10000000 | 498ms | 361ms | 557ms | 126ms | 6719480570439178671 |
| 51 | 10000000 | 507ms | 361ms | 556ms | 126ms | 11812132910317795413 |
| 52 | 10000000 | 493ms | 361ms | 555ms | 126ms | 11021839794022962509 |
| 53 | 10000000 | 518ms | 361ms | 561ms | 126ms | 2462295926570472844 |
| 54 | 10000000 | 519ms | 361ms | 561ms | 126ms | 275490399687900006 |
| 55 | 10000000 | 528ms | 361ms | 570ms | 126ms | 2562928445283722654 |
| 56 | 10000000 | 516ms | 361ms | 555ms | 126ms | 1743518335752369252 |
| 57 | 10000000 | 539ms | 361ms | 569ms | 126ms | 7457535505284818154 |
| 58 | 10000000 | 538ms | 361ms | 569ms | 126ms | 6213021112474537562 |
| 59 | 10000000 | 548ms | 361ms | 572ms | 126ms | 736227285730524220 |
| 60 | 10000000 | 534ms | 361ms | 568ms | 126ms | 37960603037229026 |
| 61 | 10000000 | 559ms | 361ms | 575ms | 126ms | 16461284997891630281 |
| 62 | 10000000 | 560ms | 361ms | 573ms | 126ms | 12511146113043356676 |
| 63 | 10000000 | 569ms | 361ms | 573ms | 126ms | 14124704981154930902 |
| 64 | 10000000 | 555ms | 361ms | 567ms | 126ms | 3387095072326192733 |
| 65 | 10000000 | 581ms | 501ms | 589ms | 179ms | 13547777368492991335 |
| 66 | 10000000 | 579ms | 501ms | 590ms | 179ms | 13295993514054343975 |
| 67 | 10000000 | 588ms | 499ms | 595ms | 179ms | 8154973214361862694 |
| 68 | 10000000 | 573ms | 499ms | 592ms | 179ms | 2362853843457280098 |
| 69 | 10000000 | 598ms | 499ms | 598ms | 179ms | 15929968647321650776 |
| 70 | 10000000 | 599ms | 499ms | 599ms | 179ms | 16498155098780693763 |
| 71 | 10000000 | 608ms | 499ms | 605ms | 179ms | 3644952118603321629 |
| 72 | 10000000 | 595ms | 499ms | 593ms | 176ms | 11171246207703803333 |
| 73 | 10000000 | 620ms | 499ms | 609ms | 179ms | 6922989250478816844 |
| 74 | 10000000 | 619ms | 499ms | 606ms | 179ms | 18157204301004680132 |
| 75 | 10000000 | 628ms | 499ms | 608ms | 179ms | 153444208283376640 |
| 76 | 10000000 | 614ms | 499ms | 608ms | 179ms | 17580331797189038323 |
| 77 | 10000000 | 646ms | 499ms | 609ms | 179ms | 7815953547054859694 |
| 78 | 10000000 | 640ms | 502ms | 619ms | 179ms | 13761496996742095717 |
| 79 | 10000000 | 649ms | 499ms | 615ms | 179ms | 4805233903768168523 |
| 80 | 10000000 | 636ms | 499ms | 603ms | 176ms | 18098541542774409089 |
| 81 | 10000000 | 661ms | 499ms | 618ms | 179ms | 6605226411769398430 |
| 82 | 10000000 | 660ms | 500ms | 618ms | 179ms | 4413779025985147806 |
| 83 | 10000000 | 669ms | 500ms | 614ms | 179ms | 15268552116549827993 |
| 84 | 10000000 | 654ms | 499ms | 615ms | 179ms | 15250798782691203045 |
| 85 | 10000000 | 679ms | 499ms | 619ms | 179ms | 8416198546191738106 |
| 86 | 10000000 | 681ms | 499ms | 622ms | 179ms | 17275801692719937144 |
| 87 | 10000000 | 690ms | 499ms | 628ms | 179ms | 10798689642475658580 |
| 88 | 10000000 | 676ms | 499ms | 616ms | 176ms | 12032863216757418371 |
| 89 | 10000000 | 701ms | 499ms | 627ms | 179ms | 6539635001765077934 |
| 90 | 10000000 | 700ms | 499ms | 630ms | 179ms | 8275131098333191231 |
| 91 | 10000000 | 710ms | 499ms | 632ms | 179ms | 4872244098058301341 |
| 92 | 10000000 | 695ms | 500ms | 636ms | 179ms | 4789100806046235410 |
| 93 | 10000000 | 720ms | 500ms | 633ms | 179ms | 2575768749747692663 |
| 94 | 10000000 | 722ms | 499ms | 643ms | 179ms | 11626873956161976981 |
| 95 | 10000000 | 731ms | 499ms | 641ms | 179ms | 12289139376865514038 |
| 96 | 10000000 | 717ms | 499ms | 626ms | 176ms | 9854758298569812674 |
| 97 | 10000000 | 743ms | 637ms | 642ms | 195ms | 11217604370629365711 |
| 98 | 10000000 | 741ms | 637ms | 645ms | 195ms | 5732886877218488954 |
| 99 | 10000000 | 751ms | 637ms | 646ms | 195ms | 6409128288229863279 |
| 100 | 10000000 | 735ms | 638ms | 646ms | 195ms | 6234477830366220487 |
| 101 | 10000000 | 761ms | 637ms | 648ms | 195ms | 14733160846118349054 |
| 102 | 10000000 | 762ms | 637ms | 653ms | 195ms | 4986420183360605255 |
| 103 | 10000000 | 771ms | 637ms | 654ms | 195ms | 14695602930703320987 |
| 104 | 10000000 | 757ms | 637ms | 654ms | 194ms | 5870344623134506942 |
| 105 | 10000000 | 790ms | 646ms | 666ms | 197ms | 10992604190752054841 |
| 106 | 10000000 | 788ms | 646ms | 668ms | 197ms | 13227267160840336667 |
| 107 | 10000000 | 799ms | 646ms | 669ms | 197ms | 10638357826797507215 |
| 108 | 10000000 | 782ms | 646ms | 674ms | 197ms | 2846320667699135608 |
| 109 | 10000000 | 809ms | 646ms | 674ms | 197ms | 17613561350319021301 |
| 110 | 10000000 | 810ms | 647ms | 677ms | 197ms | 4250768808434611959 |
| 111 | 10000000 | 819ms | 646ms | 678ms | 197ms | 2263554409051604781 |
| 112 | 10000000 | 804ms | 646ms | 665ms | 193ms | 9952720391791726853 |
| 113 | 10000000 | 832ms | 646ms | 678ms | 197ms | 14354622517502655924 |
| 114 | 10000000 | 830ms | 646ms | 677ms | 197ms | 199603174493678259 |
| 115 | 10000000 | 839ms | 646ms | 685ms | 197ms | 552086746428245898 |
| 116 | 10000000 | 823ms | 645ms | 681ms | 197ms | 4508235775234254273 |
| 117 | 10000000 | 850ms | 646ms | 686ms | 197ms | 14812798648633588620 |
| 118 | 10000000 | 851ms | 646ms | 697ms | 197ms | 3236186262662207515 |
| 119 | 10000000 | 861ms | 645ms | 693ms | 197ms | 12473322983705439012 |
| 120 | 10000000 | 845ms | 646ms | 685ms | 193ms | 10930230251241713204 |
| 121 | 10000000 | 873ms | 646ms | 691ms | 196ms | 2728668579021269261 |
| 122 | 10000000 | 871ms | 646ms | 695ms | 197ms | 6279245321905311131 |
| 123 | 10000000 | 881ms | 646ms | 700ms | 196ms | 707738359994604722 |
| 124 | 10000000 | 864ms | 645ms | 697ms | 197ms | 1871701879124001317 |
| 125 | 10000000 | 891ms | 646ms | 701ms | 197ms | 17939688305423755946 |
| 126 | 10000000 | 892ms | 646ms | 698ms | 197ms | 15579358355182734041 |
| 127 | 10000000 | 902ms | 646ms | 697ms | 197ms | 5893747923611177230 |
| 128 | 10000000 | 885ms | 646ms | 732ms | 193ms | 12508305688503813855 |
| 129 | 10000000 | 918ms | 738ms | 694ms | 198ms | 485983280581091432 |
| 130 | 10000000 | 904ms | 725ms | 698ms | 197ms | 13197737586045895633 |
| 131 | 10000000 | 913ms | 725ms | 705ms | 197ms | 8578308596649817715 |
| 132 | 10000000 | 897ms | 724ms | 700ms | 197ms | 10911633099672299876 |
| 133 | 10000000 | 923ms | 725ms | 709ms | 197ms | 6328097622923909116 |
| 134 | 10000000 | 925ms | 725ms | 712ms | 197ms | 5189863034702712931 |
| 135 | 10000000 | 935ms | 725ms | 709ms | 197ms | 13523065689351677911 |
| 136 | 10000000 | 919ms | 725ms | 703ms | 197ms | 259549782062270435 |
| 137 | 10000000 | 946ms | 725ms | 718ms | 197ms | 16631441253373253952 |
| 138 | 10000000 | 944ms | 725ms | 722ms | 197ms | 4357572732090100193 |
| 139 | 10000000 | 954ms | 725ms | 722ms | 197ms | 6902731620947675589 |
| 140 | 10000000 | 938ms | 724ms | 716ms | 197ms | 6696681117059780496 |
| 141 | 10000000 | 964ms | 725ms | 718ms | 197ms | 6144920926791016175 |
| 142 | 10000000 | 965ms | 725ms | 721ms | 197ms | 8008607593879556920 |
| 143 | 10000000 | 975ms | 725ms | 721ms | 197ms | 9733807996729389169 |
| 144 | 10000000 | 959ms | 792ms | 709ms | 215ms | 1856585914058973867 |
| 145 | 10000000 | 988ms | 792ms | 723ms | 215ms | 16122127984889490210 |
| 146 | 10000000 | 985ms | 794ms | 729ms | 215ms | 10908080946569914677 |
| 147 | 10000000 | 994ms | 791ms | 732ms | 215ms | 2306939960840188131 |
| 148 | 10000000 | 978ms | 791ms | 727ms | 215ms | 957769381550330911 |
| 149 | 10000000 | 1005ms | 791ms | 729ms | 215ms | 7579514299465922078 |
| 150 | 10000000 | 1006ms | 792ms | 730ms | 215ms | 13770169678710591515 |
| 151 | 10000000 | 1015ms | 792ms | 736ms | 215ms | 9947396945389230265 |
| 152 | 10000000 | 1000ms | 792ms | 724ms | 215ms | 15597906691419758109 |
| 153 | 10000000 | 1028ms | 791ms | 735ms | 215ms | 5244657197848675194 |
| 154 | 10000000 | 1025ms | 792ms | 739ms | 215ms | 17584475574137082471 |
| 155 | 10000000 | 1035ms | 791ms | 740ms | 215ms | 6397860011079056922 |
| 156 | 10000000 | 1019ms | 791ms | 741ms | 215ms | 11387961102256504947 |
| 157 | 10000000 | 1045ms | 792ms | 741ms | 215ms | 12675261240422956602 |
| 158 | 10000000 | 1047ms | 792ms | 747ms | 215ms | 8403175070309924829 |
| 159 | 10000000 | 1056ms | 791ms | 743ms | 215ms | 431107727626766141 |
| 160 | 10000000 | 1040ms | 856ms | 729ms | 234ms | 9600538661491933955 |
| 161 | 10000000 | 1070ms | 856ms | 744ms | 234ms | 11036584703280155730 |
| 162 | 10000000 | 1066ms | 856ms | 747ms | 235ms | 6060410427207922554 |
| 163 | 10000000 | 1076ms | 855ms | 752ms | 234ms | 628796479457431208 |
| 164 | 10000000 | 1059ms | 856ms | 748ms | 235ms | 5628916447806051719 |
| 165 | 10000000 | 1086ms | 856ms | 750ms | 235ms | 3799552095287192438 |
| 166 | 10000000 | 1087ms | 857ms | 751ms | 234ms | 1234249609394576621 |
| 167 | 10000000 | 1097ms | 856ms | 752ms | 235ms | 212076905657032883 |
| 168 | 10000000 | 1082ms | 858ms | 735ms | 235ms | 13095328205748846432 |
| 169 | 10000000 | 1111ms | 858ms | 754ms | 235ms | 1689380659156214513 |
| 170 | 10000000 | 1108ms | 858ms | 749ms | 235ms | 10775701828432370009 |
| 171 | 10000000 | 1118ms | 859ms | 745ms | 236ms | 15841564122428878015 |
| 172 | 10000000 | 1102ms | 858ms | 751ms | 235ms | 4022547168763535473 |
| 173 | 10000000 | 1129ms | 858ms | 773ms | 235ms | 12743858081076054804 |
| 174 | 10000000 | 1128ms | 856ms | 762ms | 235ms | 4404069290154505730 |
| 175 | 10000000 | 1138ms | 856ms | 762ms | 234ms | 8440181246351770757 |
| 176 | 10000000 | 1121ms | 927ms | 744ms | 247ms | 10811223922513602803 |
| 177 | 10000000 | 1152ms | 927ms | 762ms | 248ms | 2902368925140964083 |
| 178 | 10000000 | 1148ms | 927ms | 763ms | 248ms | 8566915791525971345 |
| 179 | 10000000 | 1157ms | 927ms | 772ms | 248ms | 2074120194949384108 |
| 180 | 10000000 | 1141ms | 927ms | 766ms | 248ms | 5962093363742133915 |
| 181 | 10000000 | 1167ms | 927ms | 765ms | 248ms | 4917313080278563431 |
| 182 | 10000000 | 1169ms | 927ms | 768ms | 248ms | 9990324501061983707 |
| 183 | 10000000 | 1178ms | 929ms | 773ms | 248ms | 11183417208861609716 |
| 184 | 10000000 | 1161ms | 928ms | 754ms | 248ms | 17877722745049067516 |
| 185 | 10000000 | 1191ms | 927ms | 773ms | 248ms | 5371279770219905983 |
| 186 | 10000000 | 1187ms | 927ms | 772ms | 248ms | 9784180139851001695 |
| 187 | 10000000 | 1198ms | 927ms | 776ms | 248ms | 10956137157800310220 |
| 188 | 10000000 | 1181ms | 927ms | 770ms | 248ms | 15659179590629506819 |
| 189 | 10000000 | 1208ms | 927ms | 774ms | 248ms | 2259496408901412816 |
| 190 | 10000000 | 1209ms | 927ms | 770ms | 248ms | 2032977673822100316 |
| 191 | 10000000 | 1219ms | 927ms | 769ms | 248ms | 18319858237702795537 |
| 192 | 10000000 | 1202ms | 1003ms | 750ms | 317ms | 11443631098748632359 |
| 193 | 10000000 | 1235ms | 1003ms | 770ms | 317ms | 3396798939419642824 |
| 194 | 10000000 | 1237ms | 1003ms | 772ms | 317ms | 4282512509951177982 |
| 195 | 10000000 | 1239ms | 1003ms | 780ms | 317ms | 15507894874463012480 |
| 196 | 10000000 | 1222ms | 1003ms | 773ms | 317ms | 2344112361589452067 |
| 197 | 10000000 | 1249ms | 1003ms | 786ms | 317ms | 5318814596518209601 |
| 198 | 10000000 | 1250ms | 1003ms | 791ms | 317ms | 15785329221576913653 |
| 199 | 10000000 | 1260ms | 1003ms | 792ms | 317ms | 16953768482281422601 |
| 200 | 10000000 | 1242ms | 1003ms | 778ms | 317ms | 10338065674260007601 |
| 201 | 10000000 | 1273ms | 1003ms | 798ms | 317ms | 9017044564033973251 |
| 202 | 10000000 | 1269ms | 1003ms | 796ms | 317ms | 4742691518184043579 |
| 203 | 10000000 | 1279ms | 1003ms | 798ms | 317ms | 10318980652171683411 |
| 204 | 10000000 | 1262ms | 1003ms | 799ms | 317ms | 1806256259359409295 |
| 205 | 10000000 | 1290ms | 1003ms | 801ms | 317ms | 14331379092638082168 |
| 206 | 10000000 | 1291ms | 1003ms | 803ms | 317ms | 14930456540180795595 |
| 207 | 10000000 | 1301ms | 1003ms | 801ms | 317ms | 15586794486202392243 |
| 208 | 10000000 | 1283ms | 1076ms | 779ms | 319ms | 6769106353758197844 |
| 209 | 10000000 | 1314ms | 1076ms | 803ms | 319ms | 10132093420544486644 |
| 210 | 10000000 | 1310ms | 1075ms | 827ms | 319ms | 12639578378941455401 |
| 211 | 10000000 | 1320ms | 1075ms | 815ms | 319ms | 10515232587202058052 |
| 212 | 10000000 | 1303ms | 1075ms | 807ms | 319ms | 6279209903190532277 |
| 213 | 10000000 | 1330ms | 1075ms | 816ms | 319ms | 641494733367778468 |
| 214 | 10000000 | 1332ms | 1076ms | 816ms | 319ms | 6177158350016419973 |
| 215 | 10000000 | 1341ms | 1075ms | 823ms | 319ms | 592431278847897239 |
| 216 | 10000000 | 1323ms | 1075ms | 806ms | 319ms | 13880384784706488701 |
| 217 | 10000000 | 1355ms | 1075ms | 829ms | 319ms | 4299715658796377147 |
| 218 | 10000000 | 1351ms | 1075ms | 829ms | 319ms | 5082237368429260695 |
| 219 | 10000000 | 1361ms | 1075ms | 833ms | 319ms | 8408377349695692037 |
| 220 | 10000000 | 1343ms | 1076ms | 821ms | 319ms | 8425416622725631764 |
| 221 | 10000000 | 1371ms | 1076ms | 831ms | 319ms | 11679741492638722625 |
| 222 | 10000000 | 1372ms | 1075ms | 828ms | 319ms | 17613084844382291103 |
| 223 | 10000000 | 1382ms | 1075ms | 830ms | 319ms | 1415418550275303202 |
| 224 | 10000000 | 1364ms | 1154ms | 798ms | 327ms | 11954261004447946131 |
| 225 | 10000000 | 1409ms | 1154ms | 831ms | 327ms | 9059003867612769694 |
| 226 | 10000000 | 1392ms | 1154ms | 834ms | 327ms | 14692028393846498388 |
| 227 | 10000000 | 1408ms | 1155ms | 837ms | 327ms | 1451043122301767308 |
| 228 | 10000000 | 1384ms | 1154ms | 835ms | 327ms | 17546010983705296203 |
| 229 | 10000000 | 1412ms | 1154ms | 843ms | 327ms | 17798798603916210837 |
| 230 | 10000000 | 1413ms | 1155ms | 846ms | 327ms | 4927552538274394093 |
| 231 | 10000000 | 1423ms | 1154ms | 843ms | 327ms | 16505344965338346571 |
| 232 | 10000000 | 1404ms | 1154ms | 829ms | 327ms | 9049292652074232717 |
| 233 | 10000000 | 1437ms | 1155ms | 841ms | 327ms | 6249279017933616713 |
| 234 | 10000000 | 1432ms | 1155ms | 841ms | 327ms | 9848046260828951658 |
| 235 | 10000000 | 1442ms | 1154ms | 839ms | 327ms | 11250859207190705642 |
| 236 | 10000000 | 1424ms | 1154ms | 837ms | 327ms | 1756454488125268474 |
| 237 | 10000000 | 1452ms | 1154ms | 845ms | 327ms | 12089839452428622592 |
| 238 | 10000000 | 1454ms | 1155ms | 850ms | 327ms | 9892718606793203084 |
| 239 | 10000000 | 1464ms | 1154ms | 848ms | 327ms | 196401941234335369 |
| 240 | 10000000 | 1445ms | 1227ms | 831ms | 340ms | 3506477160554589272 |
| 241 | 10000000 | 1477ms | 1180ms | 846ms | 520ms | 2556476305018139904 |
| 242 | 10000000 | 1473ms | 1180ms | 850ms | 520ms | 16610652788985526740 |
| 243 | 10000000 | 1483ms | 1180ms | 858ms | 520ms | 13757523127281954635 |
| 244 | 10000000 | 1465ms | 1180ms | 851ms | 520ms | 9985546982343314422 |
| 245 | 10000000 | 1493ms | 1180ms | 853ms | 520ms | 17069679748942762987 |
| 246 | 10000000 | 1494ms | 1181ms | 853ms | 520ms | 1149766963705981703 |
| 247 | 10000000 | 1504ms | 1180ms | 858ms | 520ms | 18239792595502044404 |
| 248 | 10000000 | 1485ms | 1180ms | 850ms | 520ms | 16525067914017401803 |
| 249 | 10000000 | 1518ms | 1180ms | 858ms | 520ms | 6260936874504701684 |
| 250 | 10000000 | 1513ms | 1180ms | 855ms | 520ms | 18348773856968279419 |
| 251 | 10000000 | 1524ms | 1180ms | 856ms | 520ms | 14948330031258631485 |
| 252 | 10000000 | 1505ms | 1180ms | 855ms | 520ms | 1085861200568096503 |
| 253 | 10000000 | 1534ms | 1180ms | 856ms | 521ms | 5739772714099261609 |
| 254 | 10000000 | 1535ms | 1180ms | 855ms | 520ms | 8973971061852810328 |
| 511 | 10000000 | 2850ms | 1438ms | 1177ms | 869ms | 228606897162476964 |
| 1023 | 10000000 | 5705ms | 1958ms | 1781ms | 1567ms | 276844862664324460 |
| 2047 | 10000000 | 11004ms | 3241ms | 3027ms | 2964ms | 6430239533903919795 |

@DoumanAsh
Copy link
Owner

Did you wrap every computation into black box as I shown previously?
I'm honestly not sure how it is possible you have such big difference between two versions of the same algorithm

@DoumanAsh
Copy link
Owner

On side note while playing with your benchmark I noticed that compiler didn't inline some internal functions properly so I re-worked it a bit to improve performance quite a bit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants