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

Parallel layout of map keys and values #23

Closed
leventov opened this issue Jul 6, 2014 · 1 comment
Closed

Parallel layout of map keys and values #23

leventov opened this issue Jul 6, 2014 · 1 comment

Comments

@leventov
Copy link
Owner

leventov commented Jul 6, 2014

No description provided.

leventov added a commit that referenced this issue Jul 6, 2014
… refactorings and improvements to JPSG and lib/impl-generator by the way
@leventov
Copy link
Owner Author

leventov commented Jul 6, 2014

Comparison of parallel and separate layout:
Legend:
small size -- 250 entires in maps with byte keys, 1000 entries in other maps.
large size -- 60 000 entries in maps with char keys, 1 000 000 entires in maps with int or long keys.
Value type is always the same as key type.
Measured average time per one operation. Time unit: nanoseconds.

                               :      parallel :      separate
size  op             hash key  :   mean    std :   mean    std
--------------------------------------------------------------
small compute        l    byte :   7.09   0.08 :   7.12   0.14
small compute        l    char :  11.51   0.01 :  13.23   0.22
small compute        l    int  :  11.57   0.01 :  14.95   0.44
small compute        l    long :  12.22   0.02 :  13.19   0.19
small compute        q    byte :  17.90   0.03 :  16.06   0.07
small compute        q    char :  19.55   0.02 :  21.89   0.13
small compute        q    int  :  23.22   0.16 :  25.54   0.60
small compute        q    long :  25.64   0.50 :  27.23   1.33
small get            l    byte :   3.24   0.01 :   3.73   0.01
small get            l    char :   6.00   0.01 :   6.29   0.02
small get            l    int  :   6.19   0.01 :   6.26   0.05
small get            l    long :   6.96   0.01 :   6.58   0.07
small get            q    byte :  12.12   0.02 :  12.57   0.09
small get            q    char :  17.69   0.02 :  17.07   0.06
small get            q    int  :  21.13   0.07 :  21.36   0.08
small get            q    long :  22.56   0.18 :  22.82   0.35
small incrementValue l    byte :   8.14   0.46 :   6.62   0.03
small incrementValue l    char :   9.84   0.08 :   9.42   0.03
small incrementValue l    int  :   9.58   0.04 :   9.16   0.03
small incrementValue l    long :   9.58   0.01 :   9.02   0.08
small incrementValue q    byte :  15.91   0.01 :  15.44   0.04
small incrementValue q    char :  20.77   0.02 :  20.86   0.24
small incrementValue q    int  :  24.18   0.21 :  23.12   0.18
small incrementValue q    long :  24.36   0.41 :  23.53   0.41
small put            l    byte :  16.27   0.07 :  15.01   0.02
small put            l    char :   9.95   0.03 :  12.32   0.02
small put            l    int  :   9.58   0.03 :   9.59   0.03
small put            l    long :  10.16   0.08 :  10.01   0.08
small put            q    byte :  22.88   0.12 :  24.45   0.12
small put            q    char :  20.94   0.07 :  23.32   1.21
small put            q    int  :  22.56   0.05 :  23.23   0.06
small put            q    long :  25.27   0.12 :  24.28   0.20
small iter           l    byte :   6.37   0.01 :   6.71   0.05
small iter           l    char :   7.36   0.01 :   7.24   0.04
small iter           l    int  :   7.15   0.01 :   8.09   1.21
small iter           l    long :   8.39   0.27 :   8.66   1.25
small iter           q    byte :   7.22   2.27 :   6.70   1.00
small iter           q    char :   8.30   1.59 :   7.68   0.06
small iter           q    int  :   7.37   0.04 :   7.25   0.12
small iter           q    long :   8.31   0.08 :   7.19   0.06
small forEach        l    byte :   6.24   1.31 :   6.53   0.34
small forEach        l    char :   7.35   0.61 :   6.97   0.07
small forEach        l    int  :   7.60   0.76 :   6.52   0.02
small forEach        l    long :   6.31   0.01 :   6.51   0.12
small forEach        q    byte :   5.12   0.20 :   5.30   0.29
small forEach        q    char :   7.18   0.07 :   6.89   0.06
small forEach        q    int  :   9.07   3.00 :   6.26   0.05
small forEach        q    long :   6.13   0.18 :   6.47   0.08
--------------------------------------------------------------
large compute        l    char :   5.71   0.06 :   7.80   0.08
large compute        l    int  :  45.15   0.36 :  61.49   0.28
large compute        l    long :  56.18   0.62 :  90.69   0.18
large compute        q    char :  15.53   0.12 :  16.61   0.10
large compute        q    int  :  89.98   0.30 :  91.72   0.48
large compute        q    long : 114.48   0.96 : 110.70   0.36
large get            l    char :   3.58   0.02 :   5.66   0.03
large get            l    int  :  44.03   0.26 :  49.79   0.28
large get            l    long :  46.92   0.13 :  57.15   0.16
large get            q    char :  12.95   0.06 :  15.04   0.20
large get            q    int  :  86.54   0.21 :  96.83  12.86
large get            q    long : 106.18   0.26 : 107.07   0.50
large incrementValue l    char :   8.76   0.10 :   7.70   0.15
large incrementValue l    int  :  48.24   0.49 :  60.06   3.17
large incrementValue l    long :  54.40   0.55 :  71.82   2.63
large incrementValue q    char :  16.96   0.16 :  17.26   0.52
large incrementValue q    int  :  80.40   2.02 :  96.51   2.68
large incrementValue q    long :  95.46   1.50 : 115.75   6.56
large put            l    char :  12.19   0.11 :  15.03   0.35
large put            l    int  :  48.34   0.19 :  64.62   1.45
large put            l    long :  57.94   0.30 :  75.53   2.23
large put            q    char :  22.40   0.24 :  23.11   0.33
large put            q    int  :  82.20   0.69 :  88.81   4.36
large put            q    long :  97.78   0.40 : 106.72   6.63
large iter           l    byte :   6.61   0.08 :   6.89   0.39
large iter           l    char :   7.21   0.47 :   7.93   0.76
large iter           l    int  :   9.56   1.66 :   8.62   0.78
large iter           l    long :  10.99   0.41 :  10.72   1.35
large iter           q    byte :   5.88   0.10 :   6.21   0.53
large iter           q    char :   4.57   0.38 :   4.57   0.15
large iter           q    int  :   9.00   0.37 :   8.55   0.15
large iter           q    long :  10.85   0.42 :  10.06   0.40
large forEach        l    byte :   5.93   0.39 :   6.54   0.52
large forEach        l    char :   6.68   1.59 :   6.69   0.52
large forEach        l    int  :   7.89   0.35 :   7.85   0.12
large forEach        l    long :   8.59   0.21 :  11.87   5.13
large forEach        q    byte :   5.04   0.02 :   5.33   0.65
large forEach        q    char :   3.36   0.04 :   3.59   0.06
large forEach        q    int  :   7.56   0.11 :   7.32   0.06
large forEach        q    long :   9.00   1.09 :   9.45   0.20

@leventov leventov closed this as completed Jul 6, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant