rayon go brrrr

This commit is contained in:
kageru 2022-12-08 17:43:05 +01:00
parent 9a26ae4a4d
commit 7a085154e7
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2
2 changed files with 4 additions and 1 deletions

View File

@ -6,6 +6,7 @@ edition = "2021"
[dependencies] [dependencies]
itertools = "0.10.5" itertools = "0.10.5"
paste = "1.0" paste = "1.0"
rayon = "1.6.0"
[profile.bench] [profile.bench]
lto = true lto = true

View File

@ -1,6 +1,7 @@
#![feature(test, get_many_mut)] #![feature(test, get_many_mut)]
extern crate test; extern crate test;
use itertools::Itertools; use itertools::Itertools;
use rayon::prelude::*;
use std::iter::repeat; use std::iter::repeat;
use aoc2022::{boilerplate, common::*}; use aoc2022::{boilerplate, common::*};
@ -53,7 +54,8 @@ fn part2(parsed: &Parsed) -> usize {
let size = parsed.len(); // input is always square let size = parsed.len(); // input is always square
let transposed = transpose(parsed); let transposed = transpose(parsed);
(1..size - 1) (1..size - 1)
.flat_map(|i| repeat(i).zip(1..size - 1)) .into_par_iter()
.flat_map(|i| rayon::iter::repeat(i).zip(1..size - 1))
.map(|(i, j)| { .map(|(i, j)| {
let tree = parsed[i][j]; let tree = parsed[i][j];
let a = visible_trees(tree, transposed[j][(i + 1)..size].iter()); let a = visible_trees(tree, transposed[j][(i + 1)..size].iter());