| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> |
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> |
| <meta name="generator" content="Doxygen 1.8.6"/> |
| <title>Impala: impala::HashUtil Class Reference</title> |
| <link href="tabs.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="jquery.js"></script> |
| <script type="text/javascript" src="dynsections.js"></script> |
| <link href="navtree.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="resize.js"></script> |
| <script type="text/javascript" src="navtree.js"></script> |
| <script type="text/javascript"> |
| $(document).ready(initResizable); |
| $(window).load(resizeHeight); |
| </script> |
| <link href="search/search.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="search/search.js"></script> |
| <script type="text/javascript"> |
| $(document).ready(function() { searchBox.OnSelectItem(0); }); |
| </script> |
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> |
| </head> |
| <body> |
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> |
| <div id="titlearea"> |
| <table cellspacing="0" cellpadding="0"> |
| <tbody> |
| <tr style="height: 56px;"> |
| <td style="padding-left: 0.5em;"> |
| <div id="projectname">Impala |
| </div> |
| <div id="projectbrief">Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.</div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.8.6 --> |
| <script type="text/javascript"> |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| </script> |
| <div id="navrow1" class="tabs"> |
| <ul class="tablist"> |
| <li><a href="index.html"><span>Main Page</span></a></li> |
| <li><a href="namespaces.html"><span>Namespaces</span></a></li> |
| <li class="current"><a href="annotated.html"><span>Classes</span></a></li> |
| <li><a href="files.html"><span>Files</span></a></li> |
| <li> |
| <div id="MSearchBox" class="MSearchBoxInactive"> |
| <span class="left"> |
| <img id="MSearchSelect" src="search/mag_sel.png" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| alt=""/> |
| <input type="text" id="MSearchField" value="Search" accesskey="S" |
| onfocus="searchBox.OnSearchFieldFocus(true)" |
| onblur="searchBox.OnSearchFieldFocus(false)" |
| onkeyup="searchBox.OnSearchFieldChange(event)"/> |
| </span><span class="right"> |
| <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> |
| </span> |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div id="navrow2" class="tabs2"> |
| <ul class="tablist"> |
| <li><a href="annotated.html"><span>Class List</span></a></li> |
| <li><a href="classes.html"><span>Class Index</span></a></li> |
| <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> |
| <li><a href="functions.html"><span>Class Members</span></a></li> |
| </ul> |
| </div> |
| </div><!-- top --> |
| <div id="side-nav" class="ui-resizable side-nav-resizable"> |
| <div id="nav-tree"> |
| <div id="nav-tree-contents"> |
| <div id="nav-sync" class="sync"></div> |
| </div> |
| </div> |
| <div id="splitbar" style="-moz-user-select:none;" |
| class="ui-resizable-handle"> |
| </div> |
| </div> |
| <script type="text/javascript"> |
| $(document).ready(function(){initNavTree('classimpala_1_1HashUtil.html','');}); |
| </script> |
| <div id="doc-content"> |
| <!-- window showing the filter options --> |
| <div id="MSearchSelectWindow" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| onkeydown="return searchBox.OnSearchSelectKey(event)"> |
| <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a></div> |
| |
| <!-- iframe showing the search results (closed by default) --> |
| <div id="MSearchResultsWindow"> |
| <iframe src="javascript:void(0)" frameborder="0" |
| name="MSearchResults" id="MSearchResults"> |
| </iframe> |
| </div> |
| |
| <div class="header"> |
| <div class="summary"> |
| <a href="#pub-static-methods">Static Public Member Functions</a> | |
| <a href="#pub-static-attribs">Static Public Attributes</a> | |
| <a href="classimpala_1_1HashUtil-members.html">List of all members</a> </div> |
| <div class="headertitle"> |
| <div class="title">impala::HashUtil Class Reference</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| |
| <p>Utility class to compute hash values. |
| <a href="classimpala_1_1HashUtil.html#details">More...</a></p> |
| |
| <p><code>#include <<a class="el" href="hash-util_8h_source.html">hash-util.h</a>></code></p> |
| <div class="dynheader"> |
| Collaboration diagram for impala::HashUtil:</div> |
| <div class="dyncontent"> |
| <div class="center"><iframe scrolling="no" frameborder="0" src="classimpala_1_1HashUtil__coll__graph.svg" width="392" height="318"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div> |
| </div> |
| <table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a> |
| Static Public Member Functions</h2></td></tr> |
| <tr class="memitem:aa8566a3076a423f47cb272981c2339e7"><td class="memItemLeft" align="right" valign="top">static uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#aa8566a3076a423f47cb272981c2339e7">CrcHash</a> (const void *data, int32_t bytes, uint32_t <a class="el" href="namespaceimpala.html#a50b59c9628eedf49aa82643ce601967d">hash</a>)</td></tr> |
| <tr class="separator:aa8566a3076a423f47cb272981c2339e7"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a9298a9bb5f2016b9b57f395b99a77cbc"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classuint64__t.html">uint64_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#a9298a9bb5f2016b9b57f395b99a77cbc">MurmurHash2_64</a> (const void *input, int len, <a class="el" href="classuint64__t.html">uint64_t</a> seed)</td></tr> |
| <tr class="memdesc:a9298a9bb5f2016b9b57f395b99a77cbc"><td class="mdescLeft"> </td><td class="mdescRight">Murmur2 hash implementation returning 64-bit hashes. <a href="#a9298a9bb5f2016b9b57f395b99a77cbc">More...</a><br/></td></tr> |
| <tr class="separator:a9298a9bb5f2016b9b57f395b99a77cbc"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a27311eda96f81cd614053b52334732e9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classuint64__t.html">uint64_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#a27311eda96f81cd614053b52334732e9">FnvHash64</a> (const void *data, int32_t bytes, <a class="el" href="classuint64__t.html">uint64_t</a> <a class="el" href="namespaceimpala.html#a50b59c9628eedf49aa82643ce601967d">hash</a>)</td></tr> |
| <tr class="separator:a27311eda96f81cd614053b52334732e9"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ae7e64effecc453c8ed2e29072c48793a"><td class="memItemLeft" align="right" valign="top">static uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#ae7e64effecc453c8ed2e29072c48793a">FnvHash64to32</a> (const void *data, int32_t bytes, uint32_t <a class="el" href="namespaceimpala.html#a50b59c9628eedf49aa82643ce601967d">hash</a>)</td></tr> |
| <tr class="separator:ae7e64effecc453c8ed2e29072c48793a"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a90e4737e5bf94d622cbb2fbdac5c6634"><td class="memItemLeft" align="right" valign="top">static uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#a90e4737e5bf94d622cbb2fbdac5c6634">Hash</a> (const void *data, int32_t bytes, uint32_t seed)</td></tr> |
| <tr class="separator:a90e4737e5bf94d622cbb2fbdac5c6634"><td class="memSeparator" colspan="2"> </td></tr> |
| </table><table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a> |
| Static Public Attributes</h2></td></tr> |
| <tr class="memitem:a7a8f8053237b5740ca1faf740b6ad598"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classuint64__t.html">uint64_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#a7a8f8053237b5740ca1faf740b6ad598">MURMUR_PRIME</a> = 0xc6a4a7935bd1e995</td></tr> |
| <tr class="separator:a7a8f8053237b5740ca1faf740b6ad598"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aaf57cfdef78e3235880964328fcf6da1"><td class="memItemLeft" align="right" valign="top">static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#aaf57cfdef78e3235880964328fcf6da1">MURMUR_R</a> = 47</td></tr> |
| <tr class="separator:aaf57cfdef78e3235880964328fcf6da1"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a3d7379593b72a23f88e5c781286f81ae"><td class="memItemLeft" align="right" valign="top">static const uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#a3d7379593b72a23f88e5c781286f81ae">FNV_PRIME</a> = 0x01000193</td></tr> |
| <tr class="memdesc:a3d7379593b72a23f88e5c781286f81ae"><td class="mdescLeft"> </td><td class="mdescRight">default values recommended by <a href="http://isthe.com/chongo/tech/comp/fnv/">http://isthe.com/chongo/tech/comp/fnv/</a> <a href="#a3d7379593b72a23f88e5c781286f81ae">More...</a><br/></td></tr> |
| <tr class="separator:a3d7379593b72a23f88e5c781286f81ae"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ad47e5dcaf416f05760be732dfbc66651"><td class="memItemLeft" align="right" valign="top">static const uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#ad47e5dcaf416f05760be732dfbc66651">FNV_SEED</a> = 0x811C9DC5</td></tr> |
| <tr class="separator:ad47e5dcaf416f05760be732dfbc66651"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ae6111df0401c19203f222bd20b68ff4b"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classuint64__t.html">uint64_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#ae6111df0401c19203f222bd20b68ff4b">FNV64_PRIME</a> = 1099511628211UL</td></tr> |
| <tr class="separator:ae6111df0401c19203f222bd20b68ff4b"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a766721b27bee75c285fe09877fe9187e"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classuint64__t.html">uint64_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1HashUtil.html#a766721b27bee75c285fe09877fe9187e">FNV64_SEED</a> = 14695981039346656037UL</td></tr> |
| <tr class="separator:a766721b27bee75c285fe09877fe9187e"><td class="memSeparator" colspan="2"> </td></tr> |
| </table> |
| <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> |
| <div class="textblock"><p>Utility class to compute hash values. </p> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00028">28</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| </div><h2 class="groupheader">Member Function Documentation</h2> |
| <a class="anchor" id="aa8566a3076a423f47cb272981c2339e7"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static uint32_t impala::HashUtil::CrcHash </td> |
| <td>(</td> |
| <td class="paramtype">const void * </td> |
| <td class="paramname"><em>data</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int32_t </td> |
| <td class="paramname"><em>bytes</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint32_t </td> |
| <td class="paramname"><em>hash</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Compute the Crc32 hash for data using SSE4 instructions. The input hash parameter is the current hash/seed value. This should only be called if SSE is supported. This is ~4x faster than Fnv/Boost Hash. NOTE: Any changes made to this function need to be reflected in Codegen::GetHashFn. TODO: crc32 hashes with different seeds do not result in different hash functions. The resulting hashes are correlated. </p> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00037">37</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>References <a class="el" href="url-parser_8cc_source.html#l00041">impala::hash</a>, <a class="el" href="cpu-info_8h_source.html#l00058">impala::CpuInfo::IsSupported()</a>, <a class="el" href="cpu-info_8h_source.html#l00034">impala::CpuInfo::SSE4_2</a>, <a class="el" href="sse-util_8h_source.html#l00112">impala::SSE4_crc32_u32()</a>, and <a class="el" href="sse-util_8h_source.html#l00107">impala::SSE4_crc32_u8()</a>.</p> |
| |
| <p>Referenced by <a class="el" href="hash-util_8h_source.html#l00135">Hash()</a>, <a class="el" href="string-benchmark_8cc_source.html#l00135">TestCompactStringsRandom()</a>, <a class="el" href="string-benchmark_8cc_source.html#l00113">TestCompactStringsSequential()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00101">TestCrcIntHash()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00172">TestCrcMixedHash()</a>, <a class="el" href="string-benchmark_8cc_source.html#l00124">TestNormalStringsRandom()</a>, and <a class="el" href="string-benchmark_8cc_source.html#l00102">TestNormalStringsSequential()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a27311eda96f81cd614053b52334732e9"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static <a class="el" href="classuint64__t.html">uint64_t</a> impala::HashUtil::FnvHash64 </td> |
| <td>(</td> |
| <td class="paramtype">const void * </td> |
| <td class="paramname"><em>data</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int32_t </td> |
| <td class="paramname"><em>bytes</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="classuint64__t.html">uint64_t</a> </td> |
| <td class="paramname"><em>hash</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Implementation of the Fowler–Noll–Vo hash function. This is not as performant as boost's hash on int types (2x slower) but has bit entropy. For ints, boost just returns the value of the int which can be pathological. For example, if the data is <1000, 2000, 3000, 4000, ..> and then the mod of 1000 is taken on the hash, all values will collide to the same bucket. For string values, Fnv is slightly faster than boost. IMPORTANT: FNV hash suffers from poor diffusion of the least significant bit, which can lead to poor results when input bytes are duplicated. See <a class="el" href="classimpala_1_1HashUtil.html#ae7e64effecc453c8ed2e29072c48793a">FnvHash64to32()</a> for how this can be mitigated. </p> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00112">112</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>References <a class="el" href="hash-util_8h_source.html#l00100">FNV64_PRIME</a>, and <a class="el" href="url-parser_8cc_source.html#l00041">impala::hash</a>.</p> |
| |
| <p>Referenced by <a class="el" href="hash-util_8h_source.html#l00125">FnvHash64to32()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ae7e64effecc453c8ed2e29072c48793a"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static uint32_t impala::HashUtil::FnvHash64to32 </td> |
| <td>(</td> |
| <td class="paramtype">const void * </td> |
| <td class="paramname"><em>data</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int32_t </td> |
| <td class="paramname"><em>bytes</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint32_t </td> |
| <td class="paramname"><em>hash</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Return a 32-bit hash computed by invoking FNV-64 and folding the result to 32-bits. This technique is recommended instead of FNV-32 since the LSB of an FNV hash is the XOR of the LSBs of its input bytes, leading to poor results for duplicate inputs. The input seed 'hash' is duplicated so the top half of the seed is not all zero. </p> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00125">125</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>References <a class="el" href="hash-util_8h_source.html#l00112">FnvHash64()</a>.</p> |
| |
| <p>Referenced by <a class="el" href="raw-value_8h_source.html#l00196">impala::RawValue::GetHashValueFnv()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00084">TestFnvIntHash()</a>, and <a class="el" href="hash-benchmark_8cc_source.html#l00146">TestFnvMixedHash()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a90e4737e5bf94d622cbb2fbdac5c6634"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static uint32_t impala::HashUtil::Hash </td> |
| <td>(</td> |
| <td class="paramtype">const void * </td> |
| <td class="paramname"><em>data</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int32_t </td> |
| <td class="paramname"><em>bytes</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint32_t </td> |
| <td class="paramname"><em>seed</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Computes the hash value for data. Will call either CrcHash or MurmurHash depending on hardware capabilities. Seed values for different steps of the query execution should use different seeds to prevent accidental key collisions. (See IMPALA-219 for more details). </p> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00135">135</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>References <a class="el" href="hash-util_8h_source.html#l00037">CrcHash()</a>, <a class="el" href="cpu-info_8h_source.html#l00058">impala::CpuInfo::IsSupported()</a>, <a class="el" href="compiler-util_8h_source.html#l00032">LIKELY</a>, <a class="el" href="hash-util_8h_source.html#l00064">MurmurHash2_64()</a>, and <a class="el" href="cpu-info_8h_source.html#l00034">impala::CpuInfo::SSE4_2</a>.</p> |
| |
| <p>Referenced by <a class="el" href="raw-value_8h_source.html#l00168">impala::RawValue::GetHashValue()</a>, <a class="el" href="dict-encoding_8h_source.html#l00230">impala::DictEncoder< T >::Hash()</a>, <a class="el" href="hash-table_8h_source.html#l00192">impala::HashTableCtx::Hash()</a>, <a class="el" href="timestamp-value_8h_source.html#l00223">impala::TimestampValue::Hash()</a>, <a class="el" href="decimal-value_8h_source.html#l00303">impala::DecimalValue< int128_t >::Hash()</a>, <a class="el" href="string-value_8h_source.html#l00125">impala::hash_value()</a>, <a class="el" href="old-hash-table_8h_source.html#l00387">impala::OldHashTable::HashCurrentRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00344">impala::OldHashTable::HashVariableLenRow()</a>, <a class="el" href="hash-partition-test_8cc_source.html#l00016">main()</a>, and <a class="el" href="zigzag-test_8cc_source.html#l00056">impala::TEST()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a9298a9bb5f2016b9b57f395b99a77cbc"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static <a class="el" href="classuint64__t.html">uint64_t</a> impala::HashUtil::MurmurHash2_64 </td> |
| <td>(</td> |
| <td class="paramtype">const void * </td> |
| <td class="paramname"><em>input</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>len</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="classuint64__t.html">uint64_t</a> </td> |
| <td class="paramname"><em>seed</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td></td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Murmur2 hash implementation returning 64-bit hashes. </p> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00064">64</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>References <a class="el" href="hash-util_8h_source.html#l00060">MURMUR_PRIME</a>, and <a class="el" href="hash-util_8h_source.html#l00061">MURMUR_R</a>.</p> |
| |
| <p>Referenced by <a class="el" href="hash-util_8h_source.html#l00135">Hash()</a>, and <a class="el" href="hash-table_8h_source.html#l00192">impala::HashTableCtx::Hash()</a>.</p> |
| |
| </div> |
| </div> |
| <h2 class="groupheader">Member Data Documentation</h2> |
| <a class="anchor" id="ae6111df0401c19203f222bd20b68ff4b"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">const <a class="el" href="classuint64__t.html">uint64_t</a> impala::HashUtil::FNV64_PRIME = 1099511628211UL</td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00100">100</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="hash-util_8h_source.html#l00112">FnvHash64()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a766721b27bee75c285fe09877fe9187e"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">const <a class="el" href="classuint64__t.html">uint64_t</a> impala::HashUtil::FNV64_SEED = 14695981039346656037UL</td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00101">101</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="aggregate-functions_8cc_source.html#l01007">impala::AggregateFunctions::HllUpdate()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a3d7379593b72a23f88e5c781286f81ae"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">const uint32_t impala::HashUtil::FNV_PRIME = 0x01000193</td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>default values recommended by <a href="http://isthe.com/chongo/tech/comp/fnv/">http://isthe.com/chongo/tech/comp/fnv/</a> </p> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00098">98</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ad47e5dcaf416f05760be732dfbc66651"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">const uint32_t impala::HashUtil::FNV_SEED = 0x811C9DC5</td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00099">99</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="data-stream-test_8cc_source.html#l00383">impala::DataStreamTest::CheckReceivers()</a>, <a class="el" href="hash-table_8cc_source.html#l00444">CodegenAssignNullValue()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00273">CodegenCrcHash()</a>, <a class="el" href="data-stream-sender_8cc_source.html#l00401">impala::DataStreamSender::Send()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00118">TestBoostIntHash()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00208">TestBoostMixedHash()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00101">TestCrcIntHash()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00172">TestCrcMixedHash()</a>, <a class="el" href="hash-benchmark_8cc_source.html#l00084">TestFnvIntHash()</a>, and <a class="el" href="hash-benchmark_8cc_source.html#l00146">TestFnvMixedHash()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a7a8f8053237b5740ca1faf740b6ad598"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">const <a class="el" href="classuint64__t.html">uint64_t</a> impala::HashUtil::MURMUR_PRIME = 0xc6a4a7935bd1e995</td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00060">60</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="hash-util_8h_source.html#l00064">MurmurHash2_64()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="aaf57cfdef78e3235880964328fcf6da1"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">const int impala::HashUtil::MURMUR_R = 47</td> |
| </tr> |
| </table> |
| </td> |
| <td class="mlabels-right"> |
| <span class="mlabels"><span class="mlabel">static</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="hash-util_8h_source.html#l00061">61</a> of file <a class="el" href="hash-util_8h_source.html">hash-util.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="hash-util_8h_source.html#l00064">MurmurHash2_64()</a>.</p> |
| |
| </div> |
| </div> |
| <hr/>The documentation for this class was generated from the following file:<ul> |
| <li>be/src/util/<a class="el" href="hash-util_8h_source.html">hash-util.h</a></li> |
| </ul> |
| </div><!-- contents --> |
| </div><!-- doc-content --> |
| <!-- start footer part --> |
| <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> |
| <ul> |
| <li class="navelem"><a class="el" href="namespaceimpala.html">impala</a></li><li class="navelem"><a class="el" href="classimpala_1_1HashUtil.html">HashUtil</a></li> |
| <li class="footer">Generated on Thu May 7 2015 16:10:50 for Impala by |
| <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li> |
| </ul> |
| </div> |
| </body> |
| </html> |