hash table 에서 테이블 크기(size)

antz의 이미지

안녕하세요~ :-)

libghthash(
http://www.ipd.bth.se/ska/sim_home/libghthash.html)
를 사용해서 간단한 검색엔진을 만들고 있습니다.

중복을 체크 하기 위해서 사용하고 있는데요.

검색에 따라서 종종 10만건 이상의 결과도 나오기도 합니다.
(unique 검사 함목 : 12byte 문자)

초기화 테이블 크기를

p_table = ght_create(65536);

으로 했는데요.

1. 충돌 문제가 생기겠나요?

2. 테이블 크기를 설정할때 어떻게 하시나요?

예> 10만건의 검색, Unique 검사 - 12byte의 문자

3. 테이블 크기와 프로그램 실행 속도와는 어느정도
연관이 있을까요?
(메모리도 그렇고, 작게 잡아야 빠를것 같다는 생각에...)

전에 profile data로는 건수가 10만건 이상 되면,
hash insert 쪽이 시간을 많이 잡아먹는것 같았습니다.

4. 10만건에서 unique 체크를 하려면 hash table 말고
다른 방법이 없을까요? (12byte string 10만건)

감사합니다. :-)

익명 사용자의 이미지

1. 충돌 가능성? 당연. 1:1 매핑 퍼펙트 해쉬가 아니면 당연히 충돌이 발생가능하겠지요. 오픈해쉬나 기타 방법론이 필요.
2. 크기? 가능하다면 클수록 좋겠지요.
3. 크기 vs. 속도? 해쉬 테이블 문제라기보다는 운영체제 메모리 관리(swapping, page fault관리등)이 아닐까요? 해쉬의 장점은 contant 타임을 보장하는데 있습니다. 진부한 테크닉이지만, 해쉬테이블을 shared memory에 잡고 , shared memory를 swap불가로 세팅하면 테스트가 될듯합니다.
4. tree 인덱스를 사용하는것도 있겠지요. B-Tree 부터 그 변종들....... splay tree등도 고려될 수 있겠습니다. 좋은 알고리즘들이지만, btree는 split시에 좀 느려지겠지요?!

* 개인적으로는 해쉬를 선호한다는...
* 10만건이라고 하셨는데, 만일 10만건이 최대치라고 가정한다면 100만건정도 테스트해보시는게 좋겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.