Wireshark-dev: Re: [Wireshark-dev] QtShark performance
From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Wed, 25 Jan 2012 04:51:30 -0800
On Jan 25, 2012, at 4:34 AM, Guy Harris wrote: > > On Jan 25, 2012, at 12:57 AM, Anders Broman wrote: > >> I have had a quick look at QtShark loading a 150 Mb file is sligtly faster than the GTK version(~6s vs 8s > > Note that the Qt version doesn't yet show a progress bar. I'm experimenting with a different API for the progress bar, where you always call the "create" routine before the loop, and call the "update" routine on every trip through the loop and have it decide when to pop up the progress dialog, and, although I need to do more work on it, it might be that the extra procedure call is sufficient to slow down the file-loading process, so it might be that some of the difference between the Qt and GTK+ versions is less work done in deferred_create_progress_bar() and possibly even less work done in update_progress_bar(). ...or perhaps it's just that if you call update_progress_bar() once per iteration of the loop, you have to generate the "XXX of YYY" progress line once per iteration of the loop, so that might have to be pushed into update_progress_bar(). Speaking of performance when loading, it spins a fair while on my 253 MB gzipped file (so it's a lot more than 253 MB when uncompressed) *after* it says that the file is 100% read in; when I run "sample" from inside Activity Monitor, the main thread is doing 1939 Thread_10896974 DispatchQueue_1: com.apple.main-thread (serial) 1939 start 1939 main 1939 cf_read 1939 new_packet_list_thaw 1939 gtk_tree_view_set_model 1939 gtk_tree_view_build_tree 1913 gtk_tree_model_iter_next 1912 packet_list_iter_next 1911 packet_list_iter_next 1 g_type_check_instance_cast 1 g_type_check_instance_is_a 22 _gtk_rbtree_insert_after 16 _gtk_rbnode_new 16 g_slice_alloc 15 thread_memory_magazine1_reload 15 magazine_cache_pop_magazine 14 slab_allocator_alloc_chunk 13 allocator_add_slab 10 allocator_memalign 10 posix_memalign 10 malloc_zone_memalign 10 szone_memalign 7 szone_free 4 szone_free 3 tiny_free_list_add_ptr 2 szone_malloc_should_clear 1 szone_malloc_should_clear 1 tiny_malloc_from_free_list 1 szone_memalign 3 allocator_add_slab 1 slab_allocator_alloc_chunk 1 __spin_lock 1 thread_memory_magazine1_alloc 3 _gtk_rbtree_insert_after 3 _gtk_rbtree_insert_fixup 2 _gtk_rbnode_rotate_left 2 _fixup_parity 1 _gtk_rbtree_insert_fixup 3 gtk_tree_model_ref_node 2 g_type_check_instance_is_a 2 type_node_conforms_to_U 2 type_node_check_conformities_UorL 2 type_lookup_iface_vtable_I 1 g_type_interface_peek 1 type_lookup_iface_vtable_I 1 gtk_tree_view_build_tree so I wonder whether, if we *don't* freeze and thaw the packet list, the time to build the view's data structure could be spread out over the load process, so that it takes the same amount of time overall but doesn't have a big chunk of time at the end where it just seems to be spinning its wheels. (I'm also curious whether any of the view's data structure could be eliminated, perhaps in favor of using the tree of frame_data structures, to save both time and memory.)
- References:
- [Wireshark-dev] QtShark performance
- From: Anders Broman
- Re: [Wireshark-dev] QtShark performance
- From: Guy Harris
- [Wireshark-dev] QtShark performance
- Prev by Date: Re: [Wireshark-dev] QtShark performance
- Next by Date: [Wireshark-dev] Adding ui/qt to the tarball
- Previous by thread: Re: [Wireshark-dev] QtShark performance
- Next by thread: [Wireshark-dev] Adding ui/qt to the tarball
- Index(es):