Mercurial > pidgin.yaz
view COPYRIGHT @ 11719:109ee3bfeac5
[gaim-migrate @ 14010]
SF Patch #1333770 from corfe83
"Many times in gaim we use the function
g_slist_remove(list,node->data) to remove an element
from a GSList. If we already have the pointer to the
node we want to delete, it is faster to send it the
pointer to the node to delete rather than the data of
the node (we can do this by calling
g_slist_delete_link(list,node)). This change was made
while looking at glib's documentation and the code in
glib's gslist.c.
This is because as the remove/delete function traverses
each node in the list, it doesn't need to spend an
extra memory access to retrieve the data for each
element in the node it is traversing and then compare,
it can simply compare the pointer. In my tests outside
of gaim, this makes a big difference if the node you
are deleting is at a high index in the list. However,
even if you're deleting the first node, it about breaks
even.
So, I've found each case in gaim where we are calling
g_slist_remove, and we already have the pointer to the
appropriate node to delete (this is often the case when
we're doing a for or while loop on a GSList). I've then
replaced it with the appropriate call to
g_slist_delete_link. I, however, didn't do this in
situations where we are explicitly removing the first
element in the list, because in those situations it is
an unnecessary change.
There should be no difference in behavior, but just in
case I've tried running it with valgrind, which reports
the same number of memory leaks after my patch as
before my patch. Of course, I can't guarantee that my
normal behavior on gaim is hitting all the functions
I've changed, but in general testing it Works For Me (tm)."
As with the last patch, this one may not have a practical performance impact (or maybe it does, I have no idea), but it's not worse for any case. Given two ways of doing things where one is always at least as fast and may be faster under some cases, I like to prefer that faster way. This doesn't make the code any uglier, so I'm applying.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sat, 22 Oct 2005 20:48:18 +0000 |
parents | 2350fe2bef87 |
children | 1452a3a9f07a |
line wrap: on
line source
Gaim Copyright (C) 1998-2005 by the following: If you have contributed to Gaim, you deserve to be on this list. Contact us (see: AUTHORS) and we'll add you. Dave Ahlswede Manuel Amador Matt Amato Daniel Atallah Paul Aurich Patrick Aussems John Bailey Levi Bard Kevin Barry Derek Battams Martin Bayard Curtis Beattie Dave Bell Igor Belyi Brian Bernas Jonas Birmé Eric Blade Ethan Blanton Joshua Blanton Rainer Blessing Herman Bloggs David Blue Jason Boerner Graham Booker Craig Boston Chris Boyle Derrick J Brashear Matt Brenneke Jeremy Brooks Philip Brown Sean Burke Michael Carlson Julien Cegarra Cerulean Studios, LLC Jonathan Champ Ka-Hing Cheung Sadrul Habib Chowdhury Arturo Cisneros, Jr. Vincas Ciziunas Jonathan Clark Joe Clarke Eoin Coffey Jason Cohen Todd Cohen Nathan Conrad Felipe Contreras Alex Converse Irving Cordova Adam Cowell Palmer Cox Jeramey Crawford Balwinder Singh Dheeman Finlay Dobbie Mark Doliner Nuno Donato Jim Duchek Alex Duggan Tom Dyas Marc E. Marc Etcheverry Andrew Echols Sean Egan <sean.egan@binghamton.edu> Nelson Elhage Ignacio J. Elia Brian Enigma Stefan Esser Larry Ewing Gábor Farkas Jesse Farmer Gavan Fantom (gavan) Rob Flynn <gaim@robflynn.com> Rob Foehl (rwf) Alan Ford Nathan Fredrickson Chris J. Friesen Free Software Foundation Decklin Foster Francesco Fracassi Adam Fritzler Max G. François Gagné Evgueni V. Gavrilov Ignacy Gawedzki Michael Golden Charlie Gordon Ryan C. Gordon Miah Gregory Christian Hammond Erick Hamness Fred Hampton Casey Harkins Andy Harrison Andrew Hart (arhart) G. Sumner Hayes Michael R. Head Mike Heffner Benjamin Herrenschmidt Fernando Herrera Casey Ho Iain Holmes Joshua Honeycutt Nigel Horne Magnus Hult Karsten Huneycutt Rian Hunter Thomas Huriaux Henry Jen Benjamin Kahn Akuke Kok Cole Kowalski Gary Kramlich Patrik Kullman Tuomas Kuosmanen Tero Kuusela Richard Laager Scott Lamb Dennis Lambe Jr. Joe LaPenna Steve Láposi Daniel Larsson Peter Lawler Ho-seok Lee Moses Lei Ambrose C. Li Nicolas Lichtmaier Artem Litvinovich Syd Logan Lokheed Norberto Lopes Uli Luckas Matthew Luckie Mike Lundy Brian Macke Paolo Maggi Willian T. Mahan Kris Marsh Fidel Martinez Lalo Martins John Matthews Ryan McCabe Peter McCurdy Kurt McKee Torrey McMahon Robert McQueen Robert Mibus Benjamin Miller Kevin Miller Paul Miller Arkadiusz Miskiewicz Andrew Molloy Sergio Moretto Matthew A. Nicholson Szilard Novaki Novell Padraig O'Briain Christopher O'Brien (siege) Jon Oberheide Ruediger Oertel Gudmundur Bjarni Olafsson Nathan Owens (pianocomp81) Matt Pandina Ricardo Fernandez Pascual Riley Patterson Havoc Pennington Ted Percival Eduardo Pérez Ari Pollak Robey Pointer Nathan Poznick Brent Priddy Federicco Mena Quintero Yosef Radchenko David Raeman Etan Reisner Kristian Rietveld Pekka Riikonen Tim Ringenbach Rhett Robinson Luciano Miguel Ferreira Rocha Andrew Rodland Jason Roth Jean-Francois Roy Arvind Samptur Sam S. Tom Samstag Neil Sanchala Alceste Scalas Carsten Schaar Luke Schierer Ralph Schmieder Evan Schoenberg Federico Schwindt Torrey Searle Don Seiler Leonardo Serra Jim Seymour Joe Shaw Scott Shedden Ettore Simone John Silvestri Craig Slusher Alex Smith Malcolm Smith David Smock Phil Snowberger Eddie Sohn (tr1sk) Sony Computer Entertainment America, Inc. Mark Spencer Lex Spoon Kevin Stange David Stoddard Sun Microsystems Mårten Svantesson (fursten) Robert T. Brian Tarricone Peter Teichman Philip Tellis Arun A. Tharuvai Cestonaro Thilo Will Thompson Douglas Thrift (douglaswth) Andrew Tinney Jeffery To Warren Togami Stu Tomlinson Bill Tompkins Chris Toshok Ken Tossell Tom Tromey Todd Troxell Brad Turcotte Junichi Uekawa István Váradi Philip Van Hoof Kristof Vansant James Vega David Vermeille Sid Vicious Bjoern Voigt Nathan Walp Eric Warmenhoven Andrew Wellington Dave West Daniel Westermann-Clark Andrew Whewell Dan Willemsen Jason Willis Matt Wilson Justin Wood Ximian Jared Yanovich Timmy Yee Nickolai Zeldovich Marco Ziech Piotr Zielinski Jaroen Zwartepoorte