With a new connection for every transaction, 16 clients got 949 transactions per second directly and 17,950 through PgBouncer, which is 19 times more.
With 200 persistent clients, PgBouncer capped select-only traffic near 65,000 transactions per second against 145,000 direct, and pool sizes from 4 to 100 changed little because the single pooler
Direct read-write throughput peaked at 23,433 transactions per second with 16 clients on 8 cores and fell to 7,675 at 400 clients, so a pooler pays off for serverless traffic, many app instances or