Re: overhead of expression evaluation - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: overhead of expression evaluation
Date
Msg-id CAFj8pRBcBFVZNgkB0L31_=W-EVbZBPxjxc+dERo0mZQE3t9cVA@mail.gmail.com
Whole thread Raw
In response to overhead of expression evaluation  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-hackers


2018-05-17 11:32 GMT+02:00 Pavel Stehule <pavel.stehule@gmail.com>:
Hi

just for curiosity - I tested simple script

postgres=# do
$$
declare s bigint = 0;
begin
  for i in 1..1000000000 loop
    s := s + i;
  end loop;
  raise notice '%', s;
end;
$$;

to see a overhead of some components

   5,72%  plpgsql.so                             [.] exec_assign_value
   5,59%  postgres                               [.] GetSnapshotData
   4,94%  plpgsql.so                             [.] exec_eval_simple_expr
   4,84%  postgres                               [.] AllocSetAlloc
   3,61%  postgres                               [.] ResourceOwnerForgetPlanCacheRef
   2,95%  postgres                               [.] choose_custom_plan
   2,94%  postgres                               [.] GetUserId
   2,92%  postgres                               [.] GetCachedPlan
   2,87%  postgres                               [.] LWLockAttemptLock
   2,85%  postgres                               [.] memset@plt
   2,76%  postgres                               [.] LWLockRelease
   2,70%  postgres                               [.] AllocSetFree
   2,42%  plpgsql.so                             [.] assign_simple_var
   2,36%  postgres                               [.] ExecInterpExpr
   2,35%  postgres                               [.] PopActiveSnapshot
   2,27%  postgres                               [.] OverrideSearchPathMatchesCurrent
   2,22%  plpgsql.so                             [.] plpgsql_param_eval_var
   2,21%  plpgsql.so                             [.] exec_stmt
   1,89%  libc-2.27.so                           [.] __memset_sse2_unaligned_erms
   1,75%  postgres                               [.] PushActiveSnapshot
   1,74%  postgres                               [.] AcquireExecutorLocks
   1,67%  postgres                               [.] CopySnapshot
   1,64%  postgres                               [.] CheckCachedPlan
   1,56%  postgres                               [.] RevalidateCachedQuery
   1,55%  postgres                               [.] MemoryContextAlloc
   1,53%  postgres                               [.] pfree
   1,50%  postgres                               [.] ResourceArrayRemove
   1,43%  postgres                               [.] LWLockAcquire
   1,40%  postgres                               [.] SPI_plan_get_cached_plan


maybe we need some new kind of function, that doesn't requires snapshots, user info, locks - and the plan can be stored directly instead using plan cache.

Hard to believe, what necessary be done before we want to calculate two numbers.

Regards

Pavel
 
Regards

Pavel

pgsql-hackers by date:

Previous
From: Huong Dangminh
Date:
Subject: RE: NaNs in numeric_power (was Re: Postgres 11 release notes)
Next
From: Arseny Sher
Date:
Subject: Re: Possible bug in logical replication.