Follow Stream: ensure linear performance with many packets
authorPeter Wu <peter@lekensteyn.nl>
Wed, 4 Jul 2018 19:53:53 +0000 (21:53 +0200)
committerAnders Broman <a.broman58@gmail.com>
Fri, 6 Jul 2018 07:24:46 +0000 (07:24 +0000)
commitc40c26c04c6a39ef7867a35c50293c666255c9a4
tree2a29719dcd64d6b6646d6a6b1233255c16863afc
parent2d36c475f985e0499431ffb93bc65c8738370549
Follow Stream: ensure linear performance with many packets

Reverse the payload chunks list to achieve a running time of O(n) rather
than O(n²) for insertion of all chunks. Executing a RelWithDebInfo+ASAN
build with `tshark -r chargen-session.pcapng.gz -qz follow,tcp,hex,0`
previously took 11m5s to complete, but now finishes in 16 seconds.

Tested using a capture file with 152k TCP packets (from bug 11777).
Backport note: must update ui/gtk/follow_stream.c too.

Change-Id: Icf70d45f33d4399e53209fb6199d3809608c8d99
Reviewed-on: https://code.wireshark.org/review/28595
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
epan/dissectors/packet-ssl.c
epan/dissectors/packet-tcp.c
epan/follow.c
epan/follow.h
sharkd_session.c
ui/cli/tap-follow.c
ui/qt/follow_stream_dialog.cpp