Ethereal-cvs: [ethereal-cvs] cvs commit: ethereal file.c packet.h

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Wed, 8 Mar 2000 00:47:58 -0600 (CST)
guy         2000/03/08 00:47:55 CST

  Modified files:
    .                    file.c packet.h 
  Log:
  We already set the foreground and background color for every frame,
  which means we're already doing a "do something to the last row in the
  packet list" operation on every frame we add to the list, so adding a
  call to "gtk_clist_set_row_data()" won't make matters worse.
  
  In addition, we already set one column in a row on a "change time
  format" operation, so finding the row for a frame by calling
  "gtk_clist_find_row_from_data()" doesn't turn a constant-time operation
  into a linear-time operation, it just cranks the proportionality
  constant up - it was quadratic before, alas, and it's still quadratic.
  
  Adding calls to "gtk_clist_find_row_from_data()" to the "Find Frame" and
  "Go To Frame" code does add an extra linear operation there, but those
  operations shouldn't be common - and "Go To Frame", going to the last
  frame on an ~100,000-frame big capture file, was quick, at least on my
  450 MHz Pentium II machine, so maybe it won't be too bad.
  
  And "select_packet()" either has to search the frame table for the frame
  with the specified row number, or has to call "gtk_clist_get_row_data()"
  to do that - the first is linear in the position of the frame in the
  frame table, and the latter is linear in its position in the CList, and
  the latter is less than or equal to the former, so the only thing making
  it worse would be a change in the proportionality constant.
  
  So it probably won't hurt performance by much.
  
  Furthermore, if we add the ability to sort the display on an arbitrary
  column, or to delete frames from the display - both of which are in the
  wish list - storing the row number of the frame in the "frame_data"
  structure won't necessarily work, as the row number can change out from
  under us.
  
  Therefore, reinstate the old way of doing things, where we associate
  with each row a pointer to the "frame_data" structure for the row, using
  "gtk_clist_set_row_data()".
  
  Revision  Changes    Path
  1.169     +39 -54    ethereal/file.c
  1.174     +1 -2      ethereal/packet.h