Unless network latency is a key factor, once you get above getting data in batches of a few hundred the performance benefits are small. For example
SQL> set feedback only
SQL> set timing on
SQL> set arraysize 5
SQL> select * from asktom.t;
10000 rows selected.
Elapsed: 00:00:00.35
SQL> set arraysize 50
SQL> select * from asktom.t;
10000 rows selected.
Elapsed: 00:00:00.17
SQL> set arraysize 200
SQL> select * from asktom.t;
10000 rows selected.
Elapsed: 00:00:00.11
SQL> set arraysize 500
SQL> select * from asktom.t;
10000 rows selected.
Elapsed: 00:00:00.10
SQL> set arraysize 1000
SQL> select * from asktom.t;
10000 rows selected.
Elapsed: 00:00:00.09
In all cases, the database will only execute the query ONCE.