Entry Ducournau:2008:PHA from toplas.bib
Last update: Tue May 1 02:05:46 MDT 2012
Top |
Symbols |
Math |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z
BibTeX entry
@Article{Ducournau:2008:PHA,
author = "Roland Ducournau",
title = "Perfect hashing as an almost perfect subtype test",
journal = j-TOPLAS,
volume = "30",
number = "6",
pages = "33:1--33:56",
month = oct,
year = "2008",
CODEN = "ATPSDT",
DOI = "http://doi.acm.org/10.1145/1391956.1391960",
ISSN = "0164-0925 (print), 1558-4593 (electronic)",
ISSN-L = "0164-0925",
bibdate = "Sat Nov 1 20:05:05 MDT 2008",
bibsource = "http://www.acm.org/pubs/contents/journals/toplas/;
http://www.math.utah.edu/pub/tex/bib/toplas.bib",
abstract = "Subtype tests are an important issue in the
implementation of object-oriented programming
languages. Many techniques have been proposed, but none
of them perfectly fulfills the five requirements that
we have identified: constant-time, linear-space,
multiple inheritance, dynamic loading and inlining. In
this article, we propose a subtyping test
implementation that involves a combination of usual
hashtables and Cohen's display, which is a well-known
technique for single inheritance hierarchies. This
novel approach is based on {\em perfect hashing}, that
is, an optimized and truly constant-time variant of
hashing that applies to {\em immutable\/} hashtables.
We show that the resulting technique closely meets all
five requirements. Furthermore, in the framework of
Java-like languages --- characterized by single
inheritance of classes and multiple subtyping of
interfaces --- perfect hashing also applies to method
invocation when the receiver is typed by an interface.
The proposed technique is compared to some
alternatives, including the proposal by Palacz and
Vitek [2003]. Time-efficiency is assessed at the cycle
level in the framework of Driesen's pseudo-code and the
linear-space criterion is validated by statistical
simulation on benchmarks consisting of large-scale
class hierarchies.",
acknowledgement = ack-nhfb,
articleno = "33",
fjournal = "ACM Transactions on Programming Languages and
Systems",
keywords = "Casting; coloring; downcast; dynamic loading;
interfaces; method tables; multiple inheritance;
multiple subtyping; perfect hashing; single
inheritance; subtype test; virtual function tables",
}
Related entries
- all,
4(1)44,
4(2)258,
6(2)281,
6(4)632,
8(4)547,
10(2)248,
13(1)1,
13(1)52,
13(2)181,
13(2)237,
13(2)269,
14(1)1,
14(1)28,
14(2)127,
14(3)299,
15(4)659,
15(5)771,
16(3)649,
16(3)798,
16(3)954,
16(3)1024,
16(3)1051,
16(4)1081,
16(4)1215,
16(5)1472,
16(5)1613,
16(6)1675,
16(6)1811,
17(1)47,
17(2)197,
17(2)264,
17(3)431,
18(1)16,
18(1)30,
18(6)752,
19(1)87,
19(3)525,
19(4)557,
19(5)726,
19(5)804,
19(6)853,
19(6)916,
19(6)942,
19(6)1031,
20(3)546,
20(5)1067,
20(6)1131,
20(6)1171,
20(6)1265,
21(1)1,
21(1)138,
21(3)502,
21(3)677,
21(4)747,
21(6)1137,
22(2)265,
22(3)490,
22(4)638,
22(5)861,
27(6)1147,
28(1)1,
28(1)175,
28(2)331,
28(3)389,
28(4)696,
28(4)747,
28(5)848,
28(5)942,
29(2)13,
29(5)29,
30(2)8,
30(5)25,
30(6)30,
31(1)1,
31(1)4,
31(3)10,
31(3)12,
31(6)20,
31(6)21,
32(1)1,
32(1)2,
32(3)9,
33(1)4,
34(1)1,
34(1)4
- almost,
18(3)268,
18(5)615,
19(3)444,
19(4)557,
21(2)175,
21(2)324,
21(5)895,
29(1)2,
30(5)28
- alternative,
2(2)153,
7(1)10,
8(4)577,
11(4)491,
11(4)598,
15(4)735,
16(3)524,
16(3)954,
16(5)1613,
18(4)454,
19(3)525,
20(2)344,
21(3)569,
22(4)701,
29(2)13,
30(1)4,
30(4)21,
32(4)13,
33(3)9,
34(1)4
- apply,
4(2)179,
8(4)491,
16(3)305,
16(3)687,
16(4)1097,
16(6)1768,
18(6)711,
19(1)7,
19(6)1053,
20(5)1067,
22(5)932,
28(2)331,
28(4)696,
29(1)2,
31(1)2,
31(4)14,
31(6)21,
32(2)5,
32(6)24,
33(1)2,
33(1)4,
33(3)11,
34(1)6
- assessed,
4(2)226,
21(2)189
- benchmark,
16(3)328,
16(4)1248,
16(5)1431,
17(2)233,
17(4)600,
17(5)740,
18(1)30,
18(4)424,
19(6)853,
19(6)1031,
20(1)166,
20(3)635,
21(3)627,
21(6)1251,
22(2)265,
27(6)1097,
28(5)848,
28(5)942,
29(1)2,
30(1)4,
30(4)18,
30(4)20,
30(5)28,
30(6)32,
31(6)20,
32(6)24,
33(1)3,
34(1)4,
34(1)5
- characterized,
4(2)258,
9(4)491,
14(1)107,
14(4)521,
20(5)1067
- class,
4(4)733,
8(2)264,
10(2)204,
13(1)99,
14(1)54,
14(3)339,
15(4)575,
15(4)632,
15(4)659,
16(2)205,
16(3)428,
16(3)577,
16(3)607,
16(3)924,
16(3)1024,
16(3)1051,
16(4)1081,
16(4)1215,
17(1)85,
17(1)157,
17(2)264,
17(4)600,
17(5)777,
18(1)1,
18(1)16,
18(1)73,
18(2)109,
18(4)355,
18(4)477,
18(5)528,
18(6)711,
19(5)685,
19(5)751,
19(6)992,
20(2)302,
20(3)586,
20(6)1265,
20(6)1297,
22(3)506,
22(3)540,
22(4)583,
22(6)973,
25(5)578,
27(6)1216,
28(1)175,
28(2)207,
28(2)331,
28(3)517,
28(5)795,
29(2)13,
29(5)29,
30(2)8,
30(4)20,
32(3)9,
33(2)6,
33(4)12,
34(1)4
- closely,
10(2)204,
16(3)387,
16(3)1010,
16(4)1081,
18(6)649,
19(4)586,
19(5)639,
22(3)490,
31(4)16
- Cohen,
7(4)680
- coloring,
6(4)546,
12(4)501,
16(3)370,
16(3)428,
18(3)300,
21(5)895,
30(5)28
- combination,
9(2)198,
14(1)107,
15(1)36,
16(3)1010,
16(4)1248,
17(2)181,
18(5)564,
20(1)208,
20(2)302,
20(4)707,
20(6)1223,
21(5)948,
21(6)1251,
22(2)224,
27(6)1216,
29(1)2,
29(2)10,
30(3)17,
31(6)21
- compared,
4(1)21,
6(4)546,
13(1)150,
16(1)35,
16(5)1431,
17(4)635,
17(5)740,
19(1)188,
19(6)992,
20(1)166,
20(3)586,
20(6)1265,
21(1)138,
27(6)1097,
28(3)476,
28(4)577,
28(5)908,
30(3)17,
30(4)23,
31(2)8,
32(1)3,
32(4)13
- consisting,
14(3)339,
18(4)424,
20(1)51,
28(1)70,
28(2)331
- constant-time,
15(4)659
- criterion,
16(5)1472,
16(6)1811,
27(6)1147
- cycle,
11(1)57,
12(1)123,
16(6)1768,
17(5)740,
21(2)324,
28(5)908,
29(4)20,
31(3)9
- display,
9(3)367
- five,
17(2)233,
19(6)853,
21(3)430,
31(6)20
- furthermore,
11(4)633,
14(2)265,
16(3)607,
16(4)1248,
16(4)1319,
16(5)1411,
17(2)366,
17(4)672,
21(2)189,
21(2)286,
21(5)1028,
22(2)224,
27(6)1344,
28(5)848,
30(1)4,
32(3)9,
34(1)2
- hashing,
2(1)77,
14(4)574
- hierarchy,
5(3)405,
8(4)524,
10(2)204,
13(1)124,
16(4)1319,
16(4)1361,
16(6)1768,
16(6)1811,
18(1)30,
18(3)354,
18(6)711,
21(4)813,
22(3)540,
28(2)331,
28(3)517,
28(5)942,
30(5)28
- identified,
18(4)454,
18(6)649,
20(2)259,
20(3)635,
28(1)175,
32(5)17
- important,
4(2)179,
4(3)455,
4(4)527,
4(4)687,
9(2)125,
13(1)21,
14(3)339,
14(4)521,
15(4)659,
15(5)771,
16(2)205,
16(3)986,
16(4)1081,
16(4)1156,
16(4)1319,
16(6)1811,
17(4)600,
18(3)300,
18(4)454,
18(4)477,
19(1)188,
20(1)51,
20(3)586,
20(6)1223,
21(1)138,
21(2)189,
21(2)324,
21(5)914,
21(5)977,
21(6)1251,
22(3)506,
22(4)638,
22(4)701,
22(6)1002,
27(6)1049,
28(4)747,
29(1)3,
30(2)8,
30(3)17,
30(4)18,
30(6)34,
32(3)8,
32(3)9,
34(1)2,
34(1)3,
34(1)5
- including,
4(3)402,
4(4)552,
4(4)585,
6(2)159,
7(1)159,
7(4)501,
7(4)560,
8(4)419,
9(2)235,
14(1)28,
15(1)36,
16(2)175,
16(3)577,
16(3)687,
16(3)798,
16(3)954,
16(5)1512,
16(5)1572,
16(5)1613,
17(1)85,
17(2)293,
17(4)600,
18(2)109,
18(2)175,
19(1)87,
19(3)413,
19(6)899,
19(6)1053,
20(5)1014,
21(1)138,
21(2)240,
21(3)527,
21(4)703,
21(6)1251,
22(6)1037,
28(3)517,
30(4)19,
31(2)7,
31(4)16,
32(4)11,
32(4)15,
33(1)5,
34(1)3
- inheritance,
18(4)401,
18(6)711,
19(1)153,
22(3)506,
28(2)331,
30(5)28,
33(4)12
- inlining,
14(2)173,
20(1)166,
28(1)70,
28(1)134
- interface,
7(2)214,
8(3)273,
8(4)419,
8(4)524,
9(1)1,
9(2)164,
9(3)297,
10(2)215,
10(4)627,
10(4)633,
11(1)1,
12(2)143,
12(4)501,
12(4)566,
12(4)670,
14(2)201,
14(3)339,
14(4)471,
15(5)876,
16(1)151,
16(2)259,
16(3)370,
16(4)1361,
16(5)1572,
18(1)1,
18(1)30,
19(1)153,
21(4)813,
21(6)1077,
28(2)207,
28(3)517,
30(4)18,
31(3)12,
32(2)6,
33(4)12,
33(4)14
- invocation,
4(2)149,
16(1)3,
33(1)4
- involve,
4(4)668,
8(4)524,
13(1)1,
16(3)305,
16(3)524,
16(3)775,
17(4)576,
17(5)777,
18(1)73,
20(2)302,
20(5)1014,
22(3)490,
28(5)848,
32(4)11
- issue,
9(2)164,
9(2)198,
9(2)257,
11(4)598,
13(1)21,
13(2)237,
14(3)339,
16(3)607,
16(3)986,
16(4)1156,
16(4)1361,
16(6)1675,
17(3)431,
17(4)561,
18(6)752,
21(1)46,
21(4)813,
22(2)296,
28(3)429,
29(5)23,
30(1)4,
30(4)19,
31(5)19,
32(3)9,
33(5)15,
34(1)1
- Java-like,
28(4)619,
33(6)20
- known, well-,
4(2)258,
6(4)632,
7(1)62,
13(2)181,
16(3)687,
17(2)293,
18(5)528,
18(6)683,
19(1)7,
19(3)444,
19(4)568,
20(2)344,
20(5)1067,
21(2)189,
21(4)747,
28(2)331
- large-scale,
16(3)456,
18(4)454,
20(5)917,
28(2)207
- level,
3(2)126,
4(4)650,
5(3)405,
8(4)524,
9(3)367,
13(1)124,
14(1)54,
14(2)127,
14(2)173,
14(3)299,
16(1)35,
16(2)259,
16(6)1811,
17(4)600,
18(6)659,
19(1)1,
19(3)492,
21(2)324,
21(3)569,
21(5)977,
28(3)429,
30(3)12,
30(3)17,
30(5)28,
30(6)32,
31(4)14,
31(6)20,
31(6)22,
32(4)12,
32(4)14,
33(3)10,
34(1)5
- like, Java-,
28(4)619,
33(6)20
- many,
4(1)21,
4(1)44,
4(1)83,
4(3)455,
4(4)552,
4(4)563,
4(4)687,
7(2)183,
9(2)125,
9(2)235,
9(2)257,
9(3)319,
13(1)21,
13(1)124,
13(2)211,
14(1)1,
14(4)471,
14(4)490,
16(1)35,
16(2)175,
16(3)305,
16(3)387,
16(4)1248,
16(5)1399,
16(5)1411,
16(5)1431,
16(6)1737,
17(1)63,
17(2)181,
17(5)777,
18(1)30,
18(1)73,
18(3)254,
18(3)300,
18(5)528,
18(5)615,
19(4)568,
20(1)51,
20(1)208,
20(3)635,
20(6)1111,
20(6)1131,
21(1)138,
21(2)324,
21(3)502,
21(3)527,
21(3)677,
21(4)703,
21(4)747,
22(2)187,
22(2)265,
27(6)1049,
27(6)1216,
27(6)1270,
28(1)70,
28(1)106,
28(2)207,
28(4)747,
30(2)8,
30(3)12,
30(4)18,
30(6)34,
31(1)3,
31(2)6,
31(3)9,
31(6)20,
32(1)3,
32(5)19,
32(6)22,
33(3)10,
34(1)2,
34(1)3
- meet,
4(1)44,
14(1)107,
16(3)872,
16(6)1811,
17(5)777,
21(1)46,
21(2)240,
30(4)24,
32(2)5,
33(1)5
- multiple,
4(4)601,
7(4)501,
9(2)164,
9(4)599,
10(2)313,
10(4)579,
11(1)57,
11(4)491,
14(1)28,
14(2)201,
15(3)400,
15(4)632,
15(4)659,
15(5)745,
16(2)259,
17(1)123,
17(3)431,
18(3)235,
18(6)659,
19(1)48,
20(4)869,
20(6)1195,
21(6)1137,
22(3)431,
22(5)773,
28(2)331,
28(3)517,
30(5)28,
31(1)2,
31(1)3,
31(3)10,
32(2)4,
33(4)12,
34(1)4,
34(1)5
- none,
16(5)1411,
20(1)1
- novel,
4(2)239,
4(4)552,
5(2)236,
7(4)501,
8(4)419,
14(1)54,
14(4)574,
15(5)745,
16(3)986,
17(3)461,
18(4)355,
19(1)48,
19(5)726,
20(1)166,
20(2)436,
21(5)1028,
22(1)45,
27(6)1049,
27(6)1097,
27(6)1216,
27(6)1344,
28(1)1,
28(5)942,
30(1)4,
30(4)24,
31(5)18,
32(1)2,
32(2)4,
32(3)9,
32(4)12,
32(4)13,
32(4)15,
33(6)21,
34(1)3,
34(1)5
- object-oriented,
15(3)494,
16(4)1279,
16(6)1811,
17(2)264,
17(3)431,
17(6)805,
18(1)1,
18(4)355,
18(4)401,
18(5)519,
18(6)711,
19(1)153,
19(5)804,
20(1)116,
21(2)370,
21(3)569,
22(3)506,
25(2)225,
28(2)331,
28(3)476,
28(3)517,
28(5)795,
29(2)13,
31(1)1,
31(2)7,
31(3)9,
34(1)4
- optimized,
4(3)323,
7(1)176,
13(1)52,
14(2)173,
15(2)357,
16(1)3,
16(3)387,
16(5)1431,
17(2)217,
17(4)635,
20(6)1111,
22(3)431,
24(4)299,
27(6)1344,
30(3)17,
30(5)28,
34(1)3
- oriented, object-,
16(4)1279,
16(6)1811,
17(2)264,
17(3)431,
18(1)1,
18(4)355,
18(5)519,
19(5)804,
20(1)116,
21(2)370,
21(3)569,
22(3)506,
25(2)225,
28(2)331,
28(3)476,
28(3)517,
28(5)795,
29(2)13,
31(1)1,
31(2)7,
31(3)9,
34(1)4
- perfect,
16(4)1248,
17(4)600,
28(3)476,
30(6)32,
34(1)3
- proposal,
17(1)28,
21(1)11,
22(3)540,
28(5)942,
34(1)4
- propose,
13(2)237,
14(2)201,
15(5)745,
16(3)305,
16(3)456,
16(3)687,
16(3)986,
16(4)1248,
16(6)1737,
17(4)600,
17(4)635,
18(5)564,
18(5)615,
19(3)413,
19(3)444,
19(5)804,
20(1)116,
20(2)436,
20(6)1111,
20(6)1195,
21(1)90,
21(2)189,
21(3)677,
22(6)973,
27(6)1097,
28(1)70,
28(2)256,
28(2)331,
30(2)8,
30(4)22,
30(5)25,
30(6)30,
31(1)1,
31(1)3,
31(4)13,
32(1)2,
32(3)7,
32(4)11,
32(4)13,
32(4)14,
32(4)15,
32(5)16,
33(4)14,
34(1)2
- proposed,
4(2)239,
4(4)585,
6(2)159,
8(4)577,
9(2)125,
9(4)473,
13(1)150,
13(2)211,
14(2)127,
14(4)574,
15(4)659,
15(5)876,
16(1)35,
16(4)1097,
17(2)217,
17(2)331,
18(4)401,
18(5)564,
20(1)51,
20(4)768,
20(4)869,
20(6)1171,
20(6)1195,
21(1)11,
21(2)175,
21(5)1028,
21(6)1137,
22(2)187,
22(2)296,
22(4)638,
22(4)673,
27(6)1097,
28(3)389,
28(5)795,
30(5)25,
31(6)23,
32(1)3,
32(4)11,
32(5)16,
32(6)21,
33(1)4,
33(3)9
- pseudo-code,
31(6)22
- receiver,
17(2)264,
18(4)355,
30(6)30
- requirement,
7(1)159,
8(4)577,
16(1)151,
18(1)30,
18(6)730,
19(6)899,
19(6)992,
20(1)116,
20(2)274,
20(6)1171,
21(1)138,
28(5)848,
30(4)23,
31(1)3,
32(3)9,
33(5)15,
34(1)5
- resulting,
4(2)149,
9(3)319,
16(3)986,
16(3)1024,
16(5)1572,
17(2)181,
19(1)48,
20(3)483,
20(4)869,
21(2)370,
21(4)790,
22(2)340,
22(4)583,
22(4)638,
22(5)861,
28(3)429,
31(4)14,
31(5)19,
31(6)20,
32(2)6,
34(1)4
- scale, large-,
16(3)456,
18(4)454,
20(5)917,
28(2)207
- simulation,
3(3)293,
3(4)353,
7(3)404,
14(2)265,
15(5)771,
16(2)259,
19(6)942,
20(6)1195,
24(1)51,
27(6)1270,
28(3)476,
31(1)4,
34(1)5
- single,
4(1)44,
4(2)179,
4(3)382,
8(4)419,
9(3)319,
11(4)491,
13(1)150,
13(4)451,
14(1)1,
14(1)107,
14(2)201,
14(4)574,
15(4)632,
16(3)524,
16(3)986,
16(4)1114,
16(4)1117,
16(5)1648,
16(6)1661,
16(6)1768,
16(6)1842,
17(1)63,
17(1)85,
17(3)535,
17(5)777,
18(3)235,
18(5)528,
20(1)51,
20(3)483,
20(4)869,
21(1)46,
21(3)627,
21(5)895,
21(5)948,
21(5)977,
21(5)1028,
22(4)583,
22(5)773,
22(5)816,
22(6)1002,
28(1)70,
28(2)331,
30(4)21,
30(4)23,
30(5)28,
30(6)32,
31(3)12,
31(6)20,
32(3)9,
34(1)5
- statistical,
22(1)1,
31(6)20
- subtype,
13(4)631,
13(4)633,
15(4)575,
16(6)1811,
19(1)153,
22(3)540,
23(2)243,
28(5)795,
33(3)9
- subtyping,
15(4)575,
16(6)1811,
17(3)431,
17(4)576,
18(4)401,
18(5)519,
19(1)153,
20(6)1251,
21(3)502,
22(1)1,
27(5)819,
28(5)795,
31(5)19,
32(1)2
- table,
4(2)149,
5(2)127,
6(4)546,
9(2)257,
13(1)150,
13(3)295,
16(3)843,
17(1)1,
17(3)461,
17(4)672,
20(1)116,
20(5)980,
22(6)973
- test,
4(2)258,
4(4)563,
5(4)641,
6(4)527,
9(4)491,
10(2)204,
13(4)626,
13(4)630,
14(4)574,
16(1)3,
16(4)1248,
17(2)228,
19(3)427,
22(2)265,
27(5)819,
28(2)207,
28(2)256,
31(6)20,
32(2)4,
32(4)15
- time, constant-,
15(4)659
- truly,
20(5)980
- typed,
6(4)603,
8(3)406,
8(4)419,
13(2)237,
15(4)575,
16(5)1411,
18(2)109,
19(1)87,
20(2)436,
20(4)707,
20(6)1251,
21(1)11,
21(3)502,
21(3)527,
22(4)701,
22(6)1037,
27(6)1049,
28(3)429,
28(4)715,
28(5)848,
30(4)21,
32(3)7
- usual,
9(3)319,
14(4)589,
19(3)462,
21(6)1077,
30(6)30,
31(4)13,
32(1)2
- validated,
31(1)1
- variant,
4(2)239,
4(4)650,
5(3)405,
13(2)181,
15(1)1,
16(1)3,
16(4)1117,
21(2)370,
21(3)430,
22(4)701,
25(3)360,
28(2)290,
28(4)696,
28(4)747,
28(5)795,
30(4)24,
30(5)29,
34(1)2
- virtual,
7(1)62,
7(3)404,
19(1)153,
21(1)90,
21(6)1196,
22(4)638,
28(1)1,
28(4)619,
28(5)908,
29(6)33,
29(6)37,
30(4)21,
30(5)28,
31(6)20,
32(4)12
- well-known,
4(2)258,
6(4)632,
7(1)62,
13(2)181,
16(3)687,
17(2)293,
18(5)528,
18(6)683,
19(1)7,
19(3)444,
19(4)568,
20(2)344,
20(5)1067,
21(2)189,
21(4)747,
28(2)331