Skip to content

Commit

Permalink
rustdoc: Omit repeated paths in the search index.
Browse files Browse the repository at this point in the history
Since the items roughly follow the lexical order, there are
many consecutive items with the same path value which can be
easily compressed.

For the library and compiler docs, this commit decreases
the index size by 26% and 6% before and after gzip, respectively.
  • Loading branch information
lifthrasiir committed Apr 14, 2014
1 parent 9eb336a commit 8f5d71c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
16 changes: 15 additions & 1 deletion src/librustdoc/html/render.rs
Expand Up @@ -309,12 +309,23 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
let index = {
let mut w = MemWriter::new();
try!(write!(&mut w, r#"searchIndex['{}'] = \{"items":["#, krate.name));

let mut lastpath = ~"";
for (i, item) in cache.search_index.iter().enumerate() {
// Omit the path if it is same to that of the prior item.
let path;
if lastpath == item.path {
path = "";
} else {
lastpath = item.path.clone();
path = item.path.as_slice();
};

if i > 0 {
try!(write!(&mut w, ","));
}
try!(write!(&mut w, r#"[{:u},"{}","{}",{}"#,
item.ty, item.name, item.path,
item.ty, item.name, path,
item.desc.to_json().to_str()));
match item.parent {
Some(nodeid) => {
Expand All @@ -325,7 +336,9 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
}
try!(write!(&mut w, "]"));
}

try!(write!(&mut w, r#"],"paths":["#));

for (i, &nodeid) in pathid_to_nodeid.iter().enumerate() {
let &(ref fqp, short) = cache.paths.find(&nodeid).unwrap();
if i > 0 {
Expand All @@ -334,6 +347,7 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
try!(write!(&mut w, r#"[{:u},"{}"]"#,
short, *fqp.last().unwrap()));
}

try!(write!(&mut w, r"]\};"));

str::from_utf8(w.unwrap().as_slice()).unwrap().to_owned()
Expand Down
6 changes: 4 additions & 2 deletions src/librustdoc/html/static/main.js
Expand Up @@ -539,7 +539,7 @@

// an array of [(Number) item type,
// (String) name,
// (String) full path,
// (String) full path or empty string for previous path,
// (String) description,
// (optional Number) the parent path index to `paths`]
var items = rawSearchIndex[crate].items;
Expand All @@ -561,10 +561,11 @@
// all other search operations have access to this cached data for
// faster analysis operations
var len = items.length;
var lastPath = "";
for (var i = 0; i < len; i += 1) {
var rawRow = items[i];
var row = {crate: crate, ty: rawRow[0], name: rawRow[1],
path: rawRow[2], desc: rawRow[3],
path: rawRow[2] || lastPath, desc: rawRow[3],
parent: paths[rawRow[4]]};
searchIndex.push(row);
if (typeof row.name === "string") {
Expand All @@ -573,6 +574,7 @@
} else {
searchWords.push("");
}
lastPath = row.path;
}
}
return searchWords;
Expand Down

13 comments on commit 8f5d71c

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from alexcrichton
at lifthrasiir@8f5d71c

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging lifthrasiir/rust/rustdoc-smaller-index = 8f5d71c into auto

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lifthrasiir/rust/rustdoc-smaller-index = 8f5d71c merged ok, testing candidate = ec6c5cff

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from alexcrichton
at lifthrasiir@8f5d71c

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging lifthrasiir/rust/rustdoc-smaller-index = 8f5d71c into auto

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lifthrasiir/rust/rustdoc-smaller-index = 8f5d71c merged ok, testing candidate = b3350b94

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from alexcrichton
at lifthrasiir@8f5d71c

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging lifthrasiir/rust/rustdoc-smaller-index = 8f5d71c into auto

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lifthrasiir/rust/rustdoc-smaller-index = 8f5d71c merged ok, testing candidate = 2f41a85

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

@bors
Copy link
Contributor

@bors bors commented on 8f5d71c Apr 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fast-forwarding master to auto = 2f41a85

Please sign in to comment.