-----Original Message-----
From: wireshark-dev-bounces@xxxxxxxxxxxxx [mailto:wireshark-dev-bounces@xxxxxxxxxxxxx] On Behalf Of Jakub Zawadzki
Sent: den 22 april 2010 15:40
To: Developer support list for Wireshark
Subject: Re: [Wireshark-dev] RFC: sorted value_string + bsearch
On Tue, Apr 20, 2010 at 11:43:49PM +0200, Anders Broman wrote:
>> Would it be faster to use hash tables instead of very large
>> value_strings? In diameter i think 3gpp AVP codes are in a
>> value_string > 2k
>
>I think main problem with hash tables, is that you need to have big table, and good hash function.
>
>
>Binary search is O(log2 n), so for 5k we have at most 13 lookups.
>To achieve it with hash table we need 384 (5000/13) buckets (HASHPORTSIZE in addr_resolv.c is only 256).
>
>And I think it's hard to implement hash tables, using current value_string ABI.
>
>Cheers.
Disclaimer: Hobby C programmer :-)
A crude sketch:
I was hoping it would be possible to provide a pointer to the hash table like:
- { &hf_diameter_vendor_id,
- { "VendorId", "diameter.vendorId", FT_UINT32, BASE_DEC, VALS(sminmpec_values),
- 0x0,NULL, HFILL }},
+ { &hf_diameter_vendor_id,
+ { "VendorId", "diameter.vendorId", FT_UINT32, BASE_DEC, HASH_VALS(hastablep),
+ 0x0,NULL, HFILL }},
Use g_hastable_new_full() gint version and stuff the value_string into the hash table
In proto_register, then have proto.c extract the value. Alternatively we could perhaps
Pass a "get_value" function pointer?
I'm not sure this will work :-)
Regards
Anders
___________________________________________________________________________
Sent via: Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx>
Archives: http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe