ran cargo clippy
This commit is contained in:
parent
212e595a7e
commit
dfcc8562e6
@ -105,7 +105,7 @@ impl Citymap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn into_key_values(self) -> Vec<(String, City)> {
|
pub fn into_key_values(self) -> Vec<(String, City)> {
|
||||||
self.map.into_iter().map(|(_, s)| s).collect()
|
self.map.into_values().collect()
|
||||||
}
|
}
|
||||||
pub fn merge_with(&mut self, rhs: Self) {
|
pub fn merge_with(&mut self, rhs: Self) {
|
||||||
for (k, v) in rhs.map.into_iter() {
|
for (k, v) in rhs.map.into_iter() {
|
||||||
@ -125,7 +125,7 @@ pub fn run() {
|
|||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
let input = "../../../measurements.txt";
|
let input = "../../../measurements.txt";
|
||||||
|
|
||||||
let results = if args.find(|e| e == "st").is_some() {
|
let results = if args.any(|e| e == "st") {
|
||||||
citymap_single_thread(input)
|
citymap_single_thread(input)
|
||||||
} else {
|
} else {
|
||||||
citymap_multi_threaded(input)
|
citymap_multi_threaded(input)
|
||||||
@ -159,7 +159,6 @@ fn citymap_multi_threaded(path: &str) -> Citymap {
|
|||||||
threads.push(citymap_thread(path.to_owned(), range, i, sender.clone()));
|
threads.push(citymap_thread(path.to_owned(), range, i, sender.clone()));
|
||||||
}
|
}
|
||||||
let mut ranges = (0..cpus)
|
let mut ranges = (0..cpus)
|
||||||
.into_iter()
|
|
||||||
.map(|_| receiver.recv().unwrap())
|
.map(|_| receiver.recv().unwrap())
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
ranges.sort_unstable_by_key(|e| e.start);
|
ranges.sort_unstable_by_key(|e| e.start);
|
||||||
@ -171,7 +170,7 @@ fn citymap_multi_threaded(path: &str) -> Citymap {
|
|||||||
}),
|
}),
|
||||||
"Ranges overlap or have gaps: {ranges:?}"
|
"Ranges overlap or have gaps: {ranges:?}"
|
||||||
);
|
);
|
||||||
let results = threads
|
threads
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|e| e.join().unwrap())
|
.map(|e| e.join().unwrap())
|
||||||
//.map(|e|dbg!(e))
|
//.map(|e|dbg!(e))
|
||||||
@ -179,8 +178,7 @@ fn citymap_multi_threaded(path: &str) -> Citymap {
|
|||||||
left.merge_with(right);
|
left.merge_with(right);
|
||||||
left
|
left
|
||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap()
|
||||||
results
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn citymap_thread(
|
fn citymap_thread(
|
||||||
@ -204,7 +202,7 @@ fn citymap_thread(
|
|||||||
head.truncate(len);
|
head.truncate(len);
|
||||||
|
|
||||||
for (i, &pos) in head.iter().enumerate() {
|
for (i, &pos) in head.iter().enumerate() {
|
||||||
if pos == '\n' as u8 {
|
if pos == b'\n' {
|
||||||
range.start += i as u64;
|
range.start += i as u64;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -218,7 +216,7 @@ fn citymap_thread(
|
|||||||
head.truncate(len);
|
head.truncate(len);
|
||||||
|
|
||||||
for (i, &pos) in head.iter().enumerate() {
|
for (i, &pos) in head.iter().enumerate() {
|
||||||
if pos == '\n' as u8 {
|
if pos == b'\n' {
|
||||||
range.end += i as u64;
|
range.end += i as u64;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -249,7 +247,7 @@ fn citymap_naive(input: &mut impl BufRead) -> Citymap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Skip over just newline strings that get created by the alignment process
|
// Skip over just newline strings that get created by the alignment process
|
||||||
if buf == &[b'\n'] {
|
if buf == b"\n" {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ pub fn run() {
|
|||||||
let file = File::open(FILE_PATH).expect("File measurements.txt not found");
|
let file = File::open(FILE_PATH).expect("File measurements.txt not found");
|
||||||
let mmap = unsafe { MmapOptions::new().map(&file).unwrap() };
|
let mmap = unsafe { MmapOptions::new().map(&file).unwrap() };
|
||||||
let file_length = mmap.len();
|
let file_length = mmap.len();
|
||||||
let hasher = FxBuildHasher::default();
|
let hasher = FxBuildHasher;
|
||||||
let mut stations: HashMap<u64, (String, StationMeasurements)> =
|
let mut stations: HashMap<u64, (String, StationMeasurements)> =
|
||||||
HashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher);
|
HashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher);
|
||||||
let (tx, rx) = mpsc::channel();
|
let (tx, rx) = mpsc::channel();
|
||||||
@ -44,7 +44,7 @@ pub fn run() {
|
|||||||
let mut t_stations: HashMap<u64, (String, StationMeasurements)> =
|
let mut t_stations: HashMap<u64, (String, StationMeasurements)> =
|
||||||
HashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher);
|
HashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher);
|
||||||
for line in mmap_slice.split(|&byte| byte == b'\n') {
|
for line in mmap_slice.split(|&byte| byte == b'\n') {
|
||||||
if line.len() == 0 {
|
if line.is_empty() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
let (station, temp) = line.rsplit_once(|&byte| byte == b';').unwrap();
|
let (station, temp) = line.rsplit_once(|&byte| byte == b';').unwrap();
|
||||||
|
@ -16,7 +16,7 @@ pub fn run() {
|
|||||||
let file = File::open(FILE_PATH).expect("File structured_measurements.txt not found");
|
let file = File::open(FILE_PATH).expect("File structured_measurements.txt not found");
|
||||||
let mmap = unsafe { MmapOptions::new().map(&file).unwrap() };
|
let mmap = unsafe { MmapOptions::new().map(&file).unwrap() };
|
||||||
let file_length = mmap.len();
|
let file_length = mmap.len();
|
||||||
let hasher = FxBuildHasher::default();
|
let hasher = FxBuildHasher;
|
||||||
let mut stations: FxHashMap<String, StationMeasurements> =
|
let mut stations: FxHashMap<String, StationMeasurements> =
|
||||||
FxHashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher);
|
FxHashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher);
|
||||||
let (tx, rx) = mpsc::channel();
|
let (tx, rx) = mpsc::channel();
|
||||||
|
@ -115,7 +115,7 @@ fn merge_hashmaps<'a>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Parses a chunk of the input as StationData values.
|
/// Parses a chunk of the input as StationData values.
|
||||||
fn process_chunk<'a>(current_chunk_slice: &'a [u8]) -> HashMap<&'a [u8], StationData> {
|
fn process_chunk(current_chunk_slice: &[u8]) -> HashMap<&[u8], StationData> {
|
||||||
let mut station_map: HashMap<&[u8], StationData> = HashMap::with_capacity(MAX_STATIONS);
|
let mut station_map: HashMap<&[u8], StationData> = HashMap::with_capacity(MAX_STATIONS);
|
||||||
let mut start = 0;
|
let mut start = 0;
|
||||||
while let Some(end) = current_chunk_slice[start..]
|
while let Some(end) = current_chunk_slice[start..]
|
||||||
@ -187,7 +187,7 @@ fn write_output_to_stdout(station_map: HashMap<&[u8], StationData>) -> io::Resul
|
|||||||
pub fn run() -> io::Result<()> {
|
pub fn run() -> io::Result<()> {
|
||||||
// won't accept non-utf-8 args
|
// won't accept non-utf-8 args
|
||||||
let args: Vec<String> = env::args().collect();
|
let args: Vec<String> = env::args().collect();
|
||||||
let file_name = match args.get(2).clone() {
|
let file_name = match args.get(2) {
|
||||||
Some(fname) => fname,
|
Some(fname) => fname,
|
||||||
None => "../../../measurements.txt",
|
None => "../../../measurements.txt",
|
||||||
};
|
};
|
||||||
|
@ -50,7 +50,7 @@ impl State {
|
|||||||
fn make_map<'a>(i: impl Iterator<Item = &'a [u8]>) -> HashMap<&'a BStr, State> {
|
fn make_map<'a>(i: impl Iterator<Item = &'a [u8]>) -> HashMap<&'a BStr, State> {
|
||||||
let mut state: HashMap<&'a BStr, State> = Default::default();
|
let mut state: HashMap<&'a BStr, State> = Default::default();
|
||||||
for line in i {
|
for line in i {
|
||||||
let (name, value) = line.split_once_str(&[b';']).unwrap();
|
let (name, value) = line.split_once_str(b";").unwrap();
|
||||||
let value = fast_float::parse(value).unwrap();
|
let value = fast_float::parse(value).unwrap();
|
||||||
state.entry(name.into()).or_default().update(value);
|
state.entry(name.into()).or_default().update(value);
|
||||||
}
|
}
|
||||||
@ -58,7 +58,7 @@ fn make_map<'a>(i: impl Iterator<Item = &'a [u8]>) -> HashMap<&'a BStr, State> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn solve_for_part((start, end): (usize, usize), mem: &[u8]) -> HashMap<&BStr, State> {
|
fn solve_for_part((start, end): (usize, usize), mem: &[u8]) -> HashMap<&BStr, State> {
|
||||||
make_map((&mem[start..end]).lines())
|
make_map((mem[start..end]).lines())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn merge<'a>(a: &mut HashMap<&'a BStr, State>, b: &HashMap<&'a BStr, State>) {
|
fn merge<'a>(a: &mut HashMap<&'a BStr, State>, b: &HashMap<&'a BStr, State>) {
|
||||||
@ -70,7 +70,7 @@ fn merge<'a>(a: &mut HashMap<&'a BStr, State>, b: &HashMap<&'a BStr, State>) {
|
|||||||
pub fn run() {
|
pub fn run() {
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
let cores: usize = std::thread::available_parallelism().unwrap().into();
|
let cores: usize = std::thread::available_parallelism().unwrap().into();
|
||||||
let path = match std::env::args().skip(1).next() {
|
let path = match std::env::args().nth(1) {
|
||||||
Some(path) => path,
|
Some(path) => path,
|
||||||
None => "../../../measurements.txt".to_owned(),
|
None => "../../../measurements.txt".to_owned(),
|
||||||
};
|
};
|
||||||
@ -104,7 +104,7 @@ pub fn run() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let mut all: Vec<_> = state.into_iter().collect();
|
let mut all: Vec<_> = state.into_iter().collect();
|
||||||
all.sort_unstable_by(|a, b| a.0.cmp(&b.0));
|
all.sort_unstable_by(|a, b| a.0.cmp(b.0));
|
||||||
#[cfg(feature = "json")]
|
#[cfg(feature = "json")]
|
||||||
{
|
{
|
||||||
print!("[");
|
print!("[");
|
||||||
|
Loading…
Reference in New Issue
Block a user