| From: | Andres Freund <andres(at)anarazel(dot)de> |
|---|---|
| To: | pgsql-hackers(at)postgresql(dot)org |
| Subject: | [PATCH] Replace a long chain of if's in eval_const_expressions_mutator by a switch() |
| Date: | 2011-11-18 20:13:25 |
| Message-ID: | 201111182113.25826.andres@anarazel.de |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi,
While playing around with writing a newer allocator last week (using a
somewhat slab allocator alike architecture) I found
eval_const_expressions_mutator to be surprisingly high in profiles.
For unknown reasons the function used non chained ifs for every handled
nodeType.
Replacing the if chain with if; else if; ... resulted in a small
speedup. Replacing it with a switch() in a bigger one.
When testing with a statement containing a longer VALUES statement:
pgbench -M prepared -f stmt -T 10:
orig: 10015.28
if: 10075.48
switch: 10246.52
Thats a 2.3% increase over several runs. Other statements yielded smaller but
all positive results.
As far as I can see there currently is no point for writing the function as it
is right now. Am I missing something?
Andres
| Attachment | Content-Type | Size |
|---|---|---|
| 0001-Replace-a-long-chain-of-if-s-in-eval_const_expressio.patch | text/x-patch | 59.4 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Kevin Grittner | 2011-11-18 20:16:01 | Re: testing ProcArrayLock patches |
| Previous Message | Andres Freund | 2011-11-18 20:02:44 | Re: testing ProcArrayLock patches |