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

Fix #97, decode ordered containers with 'fromDistinctAscList' #101

Merged
merged 10 commits into from
Feb 28, 2017

Conversation

sjakobi
Copy link
Contributor

@sjakobi sjakobi commented Feb 20, 2017

Performance differences:

Time:

bench-comp1
bench-comp2

Memory allocations:

50c50
<    1,000,000 Set Int              Encode/Decode: Store      420,580,936     759  OK   
---
>    1,000,000 Set Int              Encode/Decode: Store      424,580,920     766  OK   
55c55
<    2,000,000 Set Int              Encode/Decode: Store      841,194,312   1,518  OK   
---
>    2,000,000 Set Int              Encode/Decode: Store      849,194,296   1,533  OK   
60c60
<   10,000,000 Set Int              Encode/Decode: Store    4,206,073,096   7,592  OK   
---
>   10,000,000 Set Int              Encode/Decode: Store    4,246,073,080   7,666  OK   
65c65
<    1,000,000 IntSet               Encode/Decode: Store      549,981,184   1,006  OK   
---
>    1,000,000 IntSet               Encode/Decode: Store      252,081,248     435  OK   
70c70
<    2,000,000 IntSet               Encode/Decode: Store    1,139,994,240   2,088  OK   
---
>    2,000,000 IntSet               Encode/Decode: Store      504,194,624     871  OK   
75c75
<   10,000,000 IntSet               Encode/Decode: Store    6,123,454,120  11,252  OK   
---
>   10,000,000 IntSet               Encode/Decode: Store    2,521,068,864   4,355  OK   
78c78
<    1,000,000 Map Int Int          Encode: Store             328,000,384     599  OK   
---
>    1,000,000 Map Int Int          Encode: Store             288,000,368     522  OK   
80c80
<    1,000,000 Map Int Int          Encode/Decode: Store    1,864,730,296   3,513  OK   
---
>    1,000,000 Map Int Int          Encode/Decode: Store      536,580,856     968  OK   
83c83
<    2,000,000 Map Int Int          Encode: Store             656,000,384   1,198  OK   
---
>    2,000,000 Map Int Int          Encode: Store             576,000,368   1,044  OK   
85,86c85,86
<    2,000,000 Map Int Int          Encode/Decode: Store    3,873,491,688   7,306  OK   
---
>    2,000,000 Map Int Int          Encode/Decode: Store    1,073,194,232   1,936  OK   
88c88
<   10,000,000 Map Int Int          Encode: Store           3,280,005,024   5,992  OK   
---
>   10,000,000 Map Int Int          Encode: Store           2,880,005,008   5,220  OK   
90c90
<   10,000,000 Map Int Int          Encode/Decode: Store   21,013,631,352  39,721  OK   
---
>   10,000,000 Map Int Int          Encode/Decode: Store    5,366,073,912   9,684  OK   
93c93
<    1,000,000 IntMap Int           Encode: Store             352,000,448     644  OK   
---
>    1,000,000 IntMap Int           Encode: Store             312,000,432     567  OK   
95c95
<    1,000,000 IntMap Int           Encode/Decode: Store      940,404,952   1,742  OK   
---
>    1,000,000 IntMap Int           Encode/Decode: Store      568,581,024   1,029  OK   
98c98
<    2,000,000 IntMap Int           Encode: Store             704,000,448   1,289  OK   
---
>    2,000,000 IntMap Int           Encode: Store             624,000,432   1,134  OK   
100c100
<    2,000,000 IntMap Int           Encode/Decode: Store    1,920,842,928   3,560  OK   
---
>    2,000,000 IntMap Int           Encode/Decode: Store    1,137,194,400   2,058  OK   
103c103
<   10,000,000 IntMap Int           Encode: Store           3,520,004,288   6,447  OK   
---
>   10,000,000 IntMap Int           Encode: Store           3,120,002,384   5,674  OK   
105c105
<   10,000,000 IntMap Int           Encode/Decode: Store   10,254,619,448  19,050  OK   
---
>   10,000,000 IntMap Int           Encode/Decode: Store    5,686,071,536  10,291  OK   

Apparently this version of pokeMap / pokeOrdMap is a bit faster too! It'd be interesting to see if HashMap can benefit too, but I haven't added a benchmark yet.

@sjakobi
Copy link
Contributor Author

sjakobi commented Feb 20, 2017

Actually I'm not sure how to explain the speedup seen for Set Int and Set [Char]. I guess these results are noisier than I would have thought.

Would you mind running the benchmarks on your box, @mgsloan?

# Use new container infrastructure to enable caching
sudo: false
# Use sudo-enabled environment to get 7.5GB of memory instead of 4.
sudo: required
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Seems to have worked.

Here's an overview of the various Travis CI environments.

Not sure why the OS X jobs didn't error out too.

@sjakobi
Copy link
Contributor Author

sjakobi commented Feb 24, 2017

I've fixed the merge conflicts.

@mgsloan
Copy link
Owner

mgsloan commented Feb 28, 2017

LGTM, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants