Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n7DAv-0002kC-It for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Jan 2022 09:10:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n7DAt-0007Xv-I9 for pgsql-hackers@arkaria.postgresql.org; Tue, 11 Jan 2022 09:10:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n7DAs-0007Xl-Ht for pgsql-hackers@lists.postgresql.org; Tue, 11 Jan 2022 09:10:39 +0000 Received: from out3-smtp.messagingengine.com ([66.111.4.27]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n7DAm-0001H3-7d for pgsql-hackers@postgresql.org; Tue, 11 Jan 2022 09:10:37 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 0E4E95C015E; Tue, 11 Jan 2022 04:10:29 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Tue, 11 Jan 2022 04:10:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=jXwECv4+wHNFITNV3gmvBa61WFcu2hnN9mPA2YSWR WA=; b=fFIUCwZJGypllc/5pxnc/uRszcm3T1Ia0WnQZpQAfLHNLt7fpgw5/rEQZ 3haz0sa/suueZ5LEmFfNQqMrTM1V9QDGkkRms+MOYMMiDD5TLyO1xhjxo9lkEJQi f/gZuOYSccERhYtpy3yc4MSoytdOMcM+44p+2JV7CHYwr/WQ9QSO4BWzdVrOh5q8 MK+JaU5DHWHSTausfgLzMCzNqOfTVbEc9lZtK9tFAOe4FpaoznP1HPSghZRXDx6c SKAMSPTIZO/B5FXSk8KW7npSNTtUPRfB2kmTzwQPfQxo9bz2cQiN+UE01Kya+8my Iap+wJmBWOOjh/8XHL5VDQm/taqMg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddrudehfecutefuodetggdotefrodftvfcurf hrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfhfhfgjtgfgsehtjeertddtfeejnecuhfhrohhmpefrvghtvghrucfg ihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprh hishgvuggsrdgtohhmqeenucggtffrrghtthgvrhhnpeffvefgueduueelieeufeejvdfh ffettddtudegvdeuuedtuddvhedvheffudejhfenucffohhmrghinhepphhoshhtghhrvg hsqhhlrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhf rhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtg homh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 11 Jan 2022 04:10:27 -0500 (EST) Message-ID: Date: Tue, 11 Jan 2022 10:10:25 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: ICU for global collation Content-Language: en-US To: Julien Rouhaud Cc: pgsql-hackers , Daniel Verite References: <374f8048-9d87-462c-a8aa-d02ffca6525f@manitou-mail.org> <525ef44f-52bf-505f-a491-07835d039424@enterprisedb.com> <20220110032508.4eyz6m6mpvt622la@jrouhaud> <20220110060027.egvaly4lskylo22f@jrouhaud> From: Peter Eisentraut In-Reply-To: <20220110060027.egvaly4lskylo22f@jrouhaud> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 10.01.22 07:00, Julien Rouhaud wrote: >>> And then I changed in varstr_cmp(): >>> >>> if (collid != DEFAULT_COLLATION_OID) >>> mylocale = pg_newlocale_from_collation(collid); >>> >>> to just >>> >>> mylocale = pg_newlocale_from_collation(collid); >>> >>> I find that the \timing results are indistinguishable. (I used locale >>> "en_US.UTF-8" and made sure that that code path is actually hit.) >>> >>> Does anyone have other insights? >> >> Looking at the git history, you added this comment in 414c5a2ea65. >> >> After a bit a digging in the lists, I found that you introduced it to fix a >> reported 13% slowdown in varstr_cmp(): >> https://www.postgresql.org/message-id/20110129075253.GA18784%40tornado.leadboat.com >> https://www.postgresql.org/message-id/1296748408.6442.1.camel%40vanquo.pezone.net > > So I tried to run Noah's benchmark to see if I could reproduce the slowdown. > Unfortunately the results I'm getting don't really make sense as removing the > optimisation brings a 15% speedup, and with a few more runs I can see that I > have about 25% noise, so there isn't much I can do to help. Heh, I had that same experience, it actually got faster without the optimization, but then got lost in the noise on further testing. Looking back at those discussions, I don't think those old test results are relevant anymore. In the patch that was being tested there, pg_newlocale_from_collation(), did not contain if (collid == DEFAULT_COLLATION_OID) return (pg_locale_t) 0; so the default collation actually went through most or all of the function and did a lot of work. That would understandably be quite slow. But just calling a function and returning immediately should not be a problem. Otherwise, the call to check_collation_set() in varstr_cmp() and elsewhere would be just as bad. So, unless there are concerns, I'm going to see about making a patch to call pg_newlocale_from_collation() even with the default collation. That would make the actual feature patch quite a bit smaller, since we won't have to patch every call site of pg_newlocale_from_collation().