Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::fs::File;
- use memmap2::Mmap;
- use rayon::prelude::*;
- fn main() -> anyhow::Result<()> {
- let file = File::open("wikipedia.dat")?;
- let data = unsafe {
- Mmap::map(&file)?
- };
- let res = data
- .par_chunks(1024)
- .map(|chunk| {
- let mut freq = [0; 128];
- for byte in chunk.iter().filter(|b| b <= &&0x7F) {
- freq[*byte as usize] += 1;
- }
- freq
- })
- .reduce(|| [0_usize; 128], |mut acc, freq| {
- acc.iter_mut().zip(freq).for_each(|(a, n)| *a += n);
- acc
- });
- for (i, c) in res.iter().enumerate() {
- println!(
- "{} ({}) {}",
- i as u8 as char,
- i,
- c
- )
- }
- Ok(())
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement