Wireshark-commits: [Wireshark-commits] master a452d16: Optimize epan_new/init_dissection
URL: https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=a452d16f2c27fc44a41f14d05acca8e94b1c71d8
Submitter: Anders Broman (a.broman58@xxxxxxxxx)
Changed: branch: master
Repository: wireshark
Commits:
a452d16 by Evan Huus (eapache@xxxxxxxxx):
Optimize epan_new/init_dissection
As Anders correctly pointed out in I7d8f84b2e, constantly resetting state will
turn init_dissection into a bit of a hot path. Especially as we will already
bear the overhead of switching files, we don't want to fall any further behind
than we have to.
This change includes three unrelated optimizations that reduce the cost of
init_dissection by about 40% as measured by callgrind:
- only initialize ares/ADNS if that preference is enabled (this of course only
applies if you specify -n to tshark or otherwise disable the preference)
- use memcpy instead of a loop in sigcomp UDVM init
- use memcpy instead of a loop in bootp dissector
The only remaining obvious hot spot in this path is reassembly_table_init since
it is called by so many dissectors. Suggestions (perhaps to get rid of the
GPtrArray) welcome.
Oh, and one other change to use g_strerror instead of strerror as insisted
upon by the API pre-commit hook.
Change-Id: I18a74f2b64b25498116079bd4e7fc2b335c7703a
Reviewed-on: https://code.wireshark.org/review/2738
Reviewed-by: Anders Broman <a.broman58@xxxxxxxxx>
Actions performed:
from 659d0ef sip optimization: avoid calling tvb_get_guint8.
adds a452d16 Optimize epan_new/init_dissection
Summary of changes:
epan/addr_resolv.c | 48 ++++++++++++++++++++++------------------
epan/dissectors/packet-bootp.c | 7 +-----
epan/sigcomp_state_hdlr.c | 29 ++++++++++++------------
3 files changed, 41 insertions(+), 43 deletions(-)