fn process_raw_data()

in src/data/perf_stat.rs [492:536]


    fn process_raw_data(&mut self, buffer: Data) -> Result<ProcessedData> {
        let mut perf_stat = PerfStat::new();
        let raw_value = match buffer {
            Data::PerfStatRaw(ref value) => value,
            _ => panic!("Invalid Data type in raw file"),
        };
        let reader = BufReader::new(raw_value.data.as_bytes());
        for line in reader.lines() {
            let line = line?;
            let line_str: Vec<&str> = line.split(';').collect();

            // CPU and Stat name
            let mut cpu_and_name: Vec<&str> = line_str[0].split_whitespace().collect();
            let cpu = cpu_and_name[0].parse::<u64>();
            cpu_and_name.remove(0);
            let stat_name = cpu_and_name.join(" ");

            // Numerators
            let nr_split: Vec<&str> = line_str[1].split_whitespace().collect();
            let mut nr_value: u64 = 0;
            for nr in nr_split {
                nr_value += nr.parse::<u64>()?;
            }

            // Denominators
            let dr_split: Vec<&str> = line_str[2].split_whitespace().collect();
            let mut dr_value: u64 = 0;
            for dr in dr_split {
                dr_value += dr.parse::<u64>()?;
            }

            let scale: u64 = line_str[3].parse::<u64>()?;

            let named_stat = NamedStat {
                time: raw_value.time,
                name: stat_name.to_string(),
                nr_value,
                dr_value,
                scale,
            };
            perf_stat.add_named_stat(cpu?, named_stat);
        }
        let processed_data = ProcessedData::PerfStat(perf_stat);
        Ok(processed_data)
    }