Wireshark mailing list archives

Re: RFC: sorted value_string + bsearch


From: Anders Broman <anders.broman () ericsson com>
Date: Thu, 22 Apr 2010 16:06:39 +0200

 

-----Original Message-----
From: wireshark-dev-bounces () wireshark org [mailto:wireshark-dev-bounces () wireshark org] 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 () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: