public final class ByteQuadsCanonicalizer
extends java.lang.Object
BytesToNameCanonicalizer
which aims at more localized
memory access due to flattening of name quad data.
Performance improvement modest for simple JSON document data binding (maybe 3%),
but should help more for larger symbol tables, or for binary formats like Smile.
Hash area is divided into 4 sections:
hash (LSB) >> 1
hash (LSB) >> 2
int
s, where 1 - 3 ints contain 1 - 12
UTF-8 encoded bytes of name (null-padded), and last int is offset in
_names
that contains actual name Strings.Modifier and Type | Method and Description |
---|---|
java.lang.String |
addName(java.lang.String name,
int q1) |
java.lang.String |
addName(java.lang.String name,
int[] q,
int qlen) |
java.lang.String |
addName(java.lang.String name,
int q1,
int q2) |
java.lang.String |
addName(java.lang.String name,
int q1,
int q2,
int q3) |
int |
bucketCount() |
int |
calcHash(int q1) |
int |
calcHash(int[] q,
int qlen) |
int |
calcHash(int q1,
int q2) |
int |
calcHash(int q1,
int q2,
int q3) |
static ByteQuadsCanonicalizer |
createRoot()
Factory method to call to create a symbol table instance with a
randomized seed value.
|
java.lang.String |
findName(int q1) |
java.lang.String |
findName(int[] q,
int qlen) |
java.lang.String |
findName(int q1,
int q2) |
java.lang.String |
findName(int q1,
int q2,
int q3) |
int |
hashSeed() |
boolean |
isCanonicalizing() |
ByteQuadsCanonicalizer |
makeChild(int flags)
Factory method used to create actual symbol table instance to
use for parsing.
|
ByteQuadsCanonicalizer |
makeChildOrPlaceholder(int flags)
Method similar to
makeChild(int) but one that only creates real
instance of JsonFactory.Feature.CANONICALIZE_FIELD_NAMES is
enabled: otherwise a "bogus" instance is created. |
boolean |
maybeDirty()
Method called to check to quickly see if a child symbol table
may have gotten additional entries.
|
int |
primaryCount()
Method mostly needed by unit tests; calculates number of
entries that are in the primary slot set.
|
void |
release()
Method called by the using code to indicate it is done with this instance.
|
int |
secondaryCount()
Method mostly needed by unit tests; calculates number of entries
in secondary buckets
|
int |
size() |
int |
spilloverCount()
Method mostly needed by unit tests; calculates number of entries
in shared spill-over area
|
int |
tertiaryCount()
Method mostly needed by unit tests; calculates number of entries
in tertiary buckets
|
java.lang.String |
toString() |
int |
totalCount() |
public static ByteQuadsCanonicalizer createRoot()
public ByteQuadsCanonicalizer makeChild(int flags)
flags
- Bit flags of active JsonFactory.Feature
s enabled.public ByteQuadsCanonicalizer makeChildOrPlaceholder(int flags)
makeChild(int)
but one that only creates real
instance of JsonFactory.Feature.CANONICALIZE_FIELD_NAMES
is
enabled: otherwise a "bogus" instance is created.flags
- Bit flags of active JsonFactory.Feature
s enabled.public void release()
public int size()
public int bucketCount()
public boolean maybeDirty()
public int hashSeed()
public boolean isCanonicalizing()
public int primaryCount()
public int secondaryCount()
public int tertiaryCount()
public int spilloverCount()
public int totalCount()
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String findName(int q1)
public java.lang.String findName(int q1, int q2)
public java.lang.String findName(int q1, int q2, int q3)
public java.lang.String findName(int[] q, int qlen)
public java.lang.String addName(java.lang.String name, int q1)
public java.lang.String addName(java.lang.String name, int q1, int q2)
public java.lang.String addName(java.lang.String name, int q1, int q2, int q3)
public java.lang.String addName(java.lang.String name, int[] q, int qlen)
public int calcHash(int q1)
public int calcHash(int q1, int q2)
public int calcHash(int q1, int q2, int q3)
public int calcHash(int[] q, int qlen)
Copyright © 2010 - 2023 Adobe. All Rights Reserved