• David Rowley's avatar
    Optimize a few list_delete_ptr calls · e7c2b95d
    David Rowley authored
    There is a handful of places where we called list_delete_ptr() to remove
    some element from a List.  In many of these places we know, or with very
    little additional effort know the index of the ListCell that we need to
    remove.
    
    Here we change all of those places to instead either use one of;
    list_delete_nth_cell(), foreach_delete_current() or list_delete_last().
    Each of these saves from having to iterate over the list to search for the
    element to remove by its pointer value.
    
    There are some small performance gains to be had by doing this, but in the
    general case, none of these lists are likely to be very large, so the
    lookup was probably never that expensive anyway.  However, some of the
    calls are in fairly hot code paths, e.g process_equivalence().  So any
    small gains there are useful.
    
    Author: Zhijie Hou and David Rowley
    Discussion: https://postgr.es/m/b3517353ec7c4f87aa560678fbb1034b@G08CNEXMBPEKD05.g08.fujitsu.local
    e7c2b95d
parse_utilcmd.c 126 KB