[Xastir-Dev] Surprise awaiting you in CVS...

Jerry Chamberlin jerryc at netlab.org
Fri Aug 8 20:39:48 EDT 2003


OOOOOOOOOOOOOO
Damn fast on my Pentium 233

Some one deserves a "Faster than a turtle" medal

On Fri, 8 Aug 2003, Curt Mills wrote:

> 
> Well, I couldn't get "gprof" to function properly, what with all of
> our fork() and pthread_create() calls (yea, you were right Ken!).
> It wanted to show me startup and that was it.
> 
> I did however manage to get a version of "oprofile" running, which
> allows me to profile Xastir nicely (and anything else on the system,
> including the kernel!).
> 
> That done, I figured out that we were spending 97%+ of Xastir's time
> in the search_station_name() function.  We were doing a linear
> search through a linked list by name.  When we get 10,000 stations
> or more in there, things slow down.
> 
> I've gone through two iterations of changes to fix this.  The first
> involved creating an array of length 128 that was a pointer into the
> station list based on the first character of the callsign.  Once I
> had that working, tweaking it into an array of 16384 (14 bits) based
> on the lower 7 bits of the callsign's first two characters was
> pretty easy.
> 
> The end result is that we now use a hash table lookup for callsigns,
> and my Xastir here is hanging around 0.0% CPU while on a full
> firenet feed plus a filtered firenet feed (2 feeds total).  We're
> doing a direct jump into the linked list based on the first two
> callsign chars, then doing a linear search from there.  Much faster!
> 
> The heavy hitters _now_ within the Xastir program according to
> oprofile are:
> 
> 
> 0806b060 58       0.882801    decode_ax25_line
> 080c5640 66       1.00457     index_retrieve
> 08059730 67       1.01979     display_file
> 08069a10 67       1.01979     decode_info_field
> 080e3940 69       1.05023     valid_path
> 08066e90 75       1.14155     packet_data_add
> 0804fa00 79       1.20244     normal_title
> 080e4cc0 84       1.27854     begin_critical_section
> 08050040 123      1.87215     alert_match
> 080cf2d0 127      1.93303     draw_shapefile_map
> 080773f0 128      1.94825     channel_data
> 0807deb0 131      1.99391     port_write
> 08056d00 153      2.32877     mscan_file
> 08071120 154      2.34399     draw_symbol
> 080d9c20 155      2.35921     check_and_transmit_messages
> 080a6df0 177      2.69406     UpdateTime
> 08090640 179      2.72451     langcode
> 08057c40 193      2.9376      display_station
> 080c17d0 199      3.02892     convert_to_xastir_coordinates
> 08064400 201      3.05936     data_add
> 08070e10 272      4.14003     symbol
> 0807d160 424      6.45358     port_read
> 08061870 845      12.8615     search_station_name
> 08061800 1101     16.758      station_shortcuts_update_function
> 
> 
> The third column is percent (out of Xastir's 100%, not the CPU's
> 100%).
> 
> Before I started, search_station_name was at the bottom of the list
> at 97% or higher.  We were spinning our wheels trying to find the
> stations to update/display.
> 
> Please note that the codebase might be unstable for a bit while we
> work out the bugs in the new scheme, but check out your "top"
> listing for a feel-good while we're doing it!
> 
> Hopefully the new stuff will appear on the anon CVS server tomorrow.
> 
> -- 
> Curt Mills, WE7U                    hacker_NO_SPAM_ at tc.fluke.com
> Senior Methods Engineer/SysAdmin
> "Lotto:    A tax on people who are bad at math!"
> "Windows:  Microsoft's tax on computer illiterates!" -- WE7U
> "The world DOES revolve around me:  I picked the coordinate system!"
> 
> _______________________________________________
> Xastir-dev mailing list
> Xastir-dev at xastir.org
> https://krypton.hscs.virginia.edu/mailman/listinfo/xastir-dev
> 

The Net Lab year 2000 and beyond Internet Education is Science
http://www.netlab.org
WA0JRJ - Jerry
used to be ICQ 6408731
used to be AIM PappyJerry



More information about the Xastir-dev mailing list