Re: equal() perf tweak

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Neil Conway <neilc(at)samurai(dot)com>
Cc: PostgreSQL Patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: equal() perf tweak
Date: 2003-11-03 15:04:39
Message-ID: 14277.1067871879@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches

Neil Conway <neilc(at)samurai(dot)com> writes:
> This code is inefficient, however: length() requires iterating through
> the entire list, so this code scans both lists twice. The attached patch
> improves this by implementing equal() with a single scan of both lists.

You have effectively reverted the code to its previous slow state.

The problem with what you've done is that it recursively applies equal()
to the list contents, which may take a very large number of cycles, only
to eventually fail because one list is a prefix of the other. The point
of the current coding is to detect that condition before we recurse.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Stephen 2003-11-03 15:04:52 Re: Experimental patch for inter-page delay in VACUUM
Previous Message Tom Lane 2003-11-03 15:01:55 Re: adding support for posix_fadvise()

Browse pgsql-patches by date

  From Date Subject
Next Message Neil Conway 2003-11-03 16:47:55 Re: equal() perf tweak
Previous Message Tom Lane 2003-11-03 15:00:25 Re: bufmgr code cleanup