100 lines
2.8 KiB
HTML
100 lines
2.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="generator" CONTENT="http://txt2tags.org">
|
|
<LINK REL="stylesheet" TYPE="text/css" HREF="DOC.css">
|
|
<TITLE>GPERF versus CMPH</TITLE>
|
|
</HEAD><BODY BGCOLOR="white" TEXT="black">
|
|
<CENTER>
|
|
<H1>GPERF versus CMPH</H1>
|
|
</CENTER>
|
|
|
|
<P>
|
|
You might ask why cmph if <A HREF="http://www.gnu.org/software/gperf/gperf.html">gperf</A>
|
|
already works perfectly. Actually, gperf and cmph have different goals.
|
|
Basically, these are the requirements for each of them:
|
|
</P>
|
|
|
|
<UL>
|
|
<LI>GPERF
|
|
<P></P>
|
|
</UL>
|
|
|
|
<BLOCKQUOTE>
|
|
- Create very fast hash functions for <B>small</B> sets
|
|
</BLOCKQUOTE>
|
|
<BLOCKQUOTE>
|
|
- Create <B>perfect</B> hash functions
|
|
</BLOCKQUOTE>
|
|
|
|
<UL>
|
|
<LI>CMPH
|
|
<P></P>
|
|
</UL>
|
|
|
|
<BLOCKQUOTE>
|
|
- Create very fast hash function for <B>very large</B> sets
|
|
</BLOCKQUOTE>
|
|
<BLOCKQUOTE>
|
|
- Create <B>minimal perfect</B> hash functions
|
|
</BLOCKQUOTE>
|
|
<P>
|
|
As result, cmph can be used to create hash functions where gperf would run
|
|
forever without finding a perfect hash function, because of the running
|
|
time of the algorithm and the large memory usage.
|
|
On the other side, functions created by cmph are about 2x slower than those
|
|
created by gperf.
|
|
</P>
|
|
<P>
|
|
So, if you have large sets, or memory usage is a key restriction for you, stick
|
|
to cmph. If you have small sets, and do not care about memory usage, go with
|
|
gperf. The first problem is common in the information retrieval field (e.g.
|
|
assigning ids to millions of documents), while the former is usually found in
|
|
the compiler programming area (detect reserved keywords).
|
|
</P>
|
|
|
|
<HR NOSHADE SIZE=1>
|
|
|
|
<TABLE ALIGN="center" CELLPADDING="4">
|
|
<TR>
|
|
<TD><A HREF="index.html">Home</A></TD>
|
|
<TD><A HREF="chd.html">CHD</A></TD>
|
|
<TD><A HREF="bdz.html">BDZ</A></TD>
|
|
<TD><A HREF="bmz.html">BMZ</A></TD>
|
|
<TD><A HREF="chm.html">CHM</A></TD>
|
|
<TD><A HREF="brz.html">BRZ</A></TD>
|
|
<TD><A HREF="fch.html">FCH</A></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<HR NOSHADE SIZE=1>
|
|
|
|
<P>
|
|
Enjoy!
|
|
</P>
|
|
<P>
|
|
<A HREF="mailto:davi@users.sourceforge.net">Davi de Castro Reis</A>
|
|
</P>
|
|
<P>
|
|
<A HREF="mailto:db8192@users.sourceforge.net">Djamel Belazzougui</A>
|
|
</P>
|
|
<P>
|
|
<A HREF="mailto:fc_botelho@users.sourceforge.net">Fabiano Cupertino Botelho</A>
|
|
</P>
|
|
<P>
|
|
<A HREF="mailto:nivio@dcc.ufmg.br">Nivio Ziviani</A>
|
|
</P>
|
|
<script type="text/javascript">
|
|
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
|
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
|
</script>
|
|
<script type="text/javascript">
|
|
try {
|
|
var pageTracker = _gat._getTracker("UA-7698683-2");
|
|
pageTracker._trackPageview();
|
|
} catch(err) {}</script>
|
|
|
|
<!-- html code generated by txt2tags 2.6 (http://txt2tags.org) -->
|
|
<!-- cmdline: txt2tags -t html -i GPERF.t2t -o docs/gperf.html -->
|
|
</BODY></HTML>
|