Wireshark mailing list archives
Re: RFC: sorted value_string + bsearch
From: Anders Broman <a.broman () telia com>
Date: Fri, 23 Apr 2010 23:32:16 +0200
Jakub Zawadzki skrev 2010-04-23 16:54:
On Fri, Apr 23, 2010 at 04:18:40PM +0200, Anders Broman wrote:+const gchar* +match_strval_fast(const guint32 val, const value_string_fast *vs) { + guint low, idx, max; + guint32 item; + if(vs) { + switch(vs->match_type){ + case VS_SEARCH: + match_strval( val, vs->vals); + break; + case VS_INDEX: + return vs->vals[val].strptr;I think you need: return (val< vs->length) ? vs->vals[val].strptr : NULL;
Yes some polishing needed :-)
anyway sorry, but I dislike your idea :) I would prefer other function or even macro: #define match_strval_hyper_fast(val, vs) \ (val>= 0&& val< array_length(vs)&& vs[val].val == val) ? \ vs[val].strptr : match_strval(val, vs) /* fallback (?) */
I think we will get the most out of this trough proto_add_item() and friends which means using a new mask for each "matching" function in the display "variable" hence it may be better to indicate which "fast" option to use in the struct we may also come up with others as we go trough the dissectors, like a full table starting at a number ( like 500 - 1000 ->value match index minus offset). /Anders
I think this is a good idea, but it obviously requires the value string array to be properly sorted for it to work well. And the bigger the array, the more enticing it would be to use this faster method, but I think it will also be potentially harder to ensure that those bigger arrays are indeed properly sorted. Developers are bound to make mistakes, especially with the very large arrays, and as other developers add new entries, they may not know that a particular array is supposed to be sorted, and even if they do, there's no guarantee that a properly sorted array will remain so.Can't we do this check in tmp_fld_check_assert()? I think most of value_strings are registered... ___________________________________________________________________________ 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:
- Re: RFC: sorted value_string + bsearch, (continued)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 12)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 20)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 22)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 22)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 12)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 22)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 23)
- Re: RFC: sorted value_string + bsearch Maynard, Chris (Apr 23)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 23)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 23)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 23)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 26)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 26)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 26)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 27)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 27)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 27)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 27)
- Re: RFC: sorted value_string + bsearch Jakub Zawadzki (Apr 27)
- Re: RFC: sorted value_string + bsearch Anders Broman (Apr 27)