diff --git a/Chapter09/Cargo.toml b/Chapter09/Cargo.toml new file mode 100644 index 0000000..1dbd008 --- /dev/null +++ b/Chapter09/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "Chapter9" +version = "1.0.0" + +[dependencies] +cpuprofiler = "0.0.2" +flame = "0.2" +rand = "0.4.2" + +[[bin]] +name = "performance_release_mode" +path = "performance_release_mode.rs" diff --git a/Chapter09/README.md b/Chapter09/README.md new file mode 100644 index 0000000..aac2a37 --- /dev/null +++ b/Chapter09/README.md @@ -0,0 +1,4 @@ +This chapter makes use of Google's [cpuprofiler](http://goog-perftools.sourceforge.net/doc/cpu_profiler.html), +which needs to be installed separately. It will not be installed through the normal cargo build process. + +[GPerftools](https://github.com/gperftools/gperftools) is also available on Github. diff --git a/Chapter09/performance_release_mode.rs b/Chapter09/performance_release_mode.rs new file mode 100644 index 0000000..d8446ae --- /dev/null +++ b/Chapter09/performance_release_mode.rs @@ -0,0 +1,20 @@ +fn main() { + let mut res: Vec> = vec![vec![0; 512]; 512]; + for _ in 0..50 { + for i in 1..511 { + for j in 1..511 { + res[j][i] = 2; + res[j][i] += res[j-1][i-1]; + res[j][i] += res[j][i-1]; + res[j][i] += res[j+1][i-1]; + res[j][i] += res[j-1][i]; + res[j][i] += res[j][i]; + res[j][i] += res[j+1][i]; + res[j][i] += res[j-1][i+1]; + res[j][i] += res[j][i+1]; + res[j][i] += res[j+1][i+1]; + res[j][i] /= 9; + } + } + } +}