Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use `Arc<Object>` and `Arc<Vec<Variable>>` #121

Merged
merged 1 commit into from May 7, 2016

Conversation

@bvssvni
Copy link
Member

commented May 7, 2016

This improves the performance of len(list[i]) significantly when the list array contains large objects. The overall performance improves a little.

  • Because Variable::Ref is used to point to the data, it means it often stays unique such that Arc::make_mut can be used with little overhead
  • The lifetime checker prevents cyclic references, which for Arc means no memory leaks
  • Objects and arrays can be shared across multi-threads
With owned Array and Object:
test tests::bench_add    ... bench:  44,275,036 ns/iter (+/- 2,875,523)
test tests::bench_add_n  ... bench:  16,007,990 ns/iter (+/- 825,439)
test tests::bench_array  ... bench:  18,664,707 ns/iter (+/- 3,856,938)
test tests::bench_call   ... bench:  18,135,642 ns/iter (+/- 4,738,525)
test tests::bench_len    ... bench:  71,760,725 ns/iter (+/- 4,210,363) <---
test tests::bench_main   ... bench:   1,838,898 ns/iter (+/- 78,699)
test tests::bench_n_body ... bench: 210,462,478 ns/iter (+/- 17,002,199)
test tests::bench_object ... bench:  25,621,287 ns/iter (+/- 2,244,473)

With Arc:
test tests::bench_add    ... bench:  40,076,479 ns/iter (+/- 2,221,835)
test tests::bench_add_n  ... bench:  14,650,593 ns/iter (+/- 1,469,739)
test tests::bench_array  ... bench:  17,662,768 ns/iter (+/- 1,859,916)
test tests::bench_call   ... bench:  16,366,031 ns/iter (+/- 1,277,929)
test tests::bench_len    ... bench:   3,036,349 ns/iter (+/- 261,624) <---
test tests::bench_main   ... bench:   1,845,956 ns/iter (+/- 85,599)
test tests::bench_n_body ... bench: 200,154,231 ns/iter (+/- 7,275,241)
test tests::bench_object ... bench:  25,420,239 ns/iter (+/- 3,226,371)

@bvssvni bvssvni merged commit 5eb9223 into PistonDevelopers:master May 7, 2016

@bvssvni bvssvni deleted the bvssvni:arc branch May 7, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.