Skip to content

Commit ff60e43

Browse files
committed
use gzip to compress self profile json
1 parent 191132b commit ff60e43

File tree

6 files changed

+36
-13
lines changed

6 files changed

+36
-13
lines changed

Cargo.lock

Lines changed: 9 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ members = ["collector", "collector/benchlib", "site", "database", "intern"]
33
exclude = ["rust/src"]
44
resolver = "2"
55

6+
[workspace.dependencies]
7+
flate2 = "1.0.32"
8+
69
[profile.release.package.site]
710
debug = 1
811

collector/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobserver = "0.1.21"
3030
snap = "1"
3131
filetime = "0.2.14"
3232
walkdir = "2"
33-
flate2 = { version = "1.0.22", features = ["rust_backend"] }
33+
flate2 = { workspace = true, features = ["rust_backend"] }
3434
rayon = "1.5.2"
3535
cargo_metadata = "0.15.0"
3636
thousands = "0.2.0"

site/Cargo.toml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
[package]
2-
authors = ["Mark-Simulacrum <[email protected]>", "Nicholas Cameron <[email protected]>", "The rustc-perf contributors"]
2+
authors = [
3+
"Mark-Simulacrum <[email protected]>",
4+
"Nicholas Cameron <[email protected]>",
5+
"The rustc-perf contributors",
6+
]
37
name = "site"
48
version = "0.1.0"
59
edition = "2021"
@@ -42,10 +46,14 @@ mime = "0.3"
4246
prometheus = { version = "0.13", default-features = false }
4347
uuid = { version = "1.3.0", features = ["v4"] }
4448
tera = { version = "1.19", default-features = false }
45-
rust-embed = { version = "6.6.0", features = ["include-exclude", "interpolate-folder-path"] }
49+
rust-embed = { version = "6.6.0", features = [
50+
"include-exclude",
51+
"interpolate-folder-path",
52+
] }
4653
humansize = "2"
4754
lru = "0.12.0"
4855
ruzstd = "0.7.0"
56+
flate2 = { workspace = true }
4957

5058
[target.'cfg(unix)'.dependencies]
5159
jemallocator = "0.5"

site/src/request_handlers/self_profile.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ pub async fn handle_self_profile_processed_download(
127127
ContentType::from("image/svg+xml".parse::<mime::Mime>().unwrap())
128128
} else if output.filename.ends_with("html") {
129129
ContentType::html()
130+
} else if output.filename.ends_with("gz") {
131+
headers::ContentType::from("application/gzip".parse::<mime::Mime>().unwrap())
130132
} else {
131133
unreachable!()
132134
})

site/src/self_profile.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ use analyzeme::ProfilingData;
99
use anyhow::Context;
1010
use bytes::Buf;
1111
use database::ArtifactId;
12+
use flate2::write::GzEncoder;
13+
use flate2::Compression;
1214
use lru::LruCache;
15+
use std::io::Write;
1316
use std::num::NonZeroUsize;
1417
use std::time::Duration;
1518
use std::{collections::HashMap, io::Read, time::Instant};
@@ -37,9 +40,15 @@ pub fn generate(
3740
ProcessorType::Crox => {
3841
let opt = serde_json::from_str(&serde_json::to_string(&params).unwrap())
3942
.context("crox opts")?;
43+
let data = crox::generate(self_profile_data, opt).context("crox")?;
44+
45+
let mut encoder = GzEncoder::new(Vec::new(), Compression::default());
46+
encoder.write_all(&data)?;
47+
let gzip_compressed_data = encoder.finish()?;
48+
4049
Ok(Output {
41-
filename: "chrome_profiler.json",
42-
data: crox::generate(self_profile_data, opt).context("crox")?,
50+
filename: "chrome_profiler.json.gz",
51+
data: gzip_compressed_data,
4352
is_download: true,
4453
})
4554
}

0 commit comments

Comments
 (0)