I did some testing. I created a 300 partitioned empty table. Then, I inserted some rows on it and the perfomance was SLOW too.
Is the problem with inserting to the partitioned table or selecting from it? It sounds like inserting is the problem in which case I ask: how are you redirecting inserts to the appropriate partition? If you're using rules, then insert performance will quickly degrade with number of partitions as *every* rule needs to be evaluated for *every* row inserted to the base table. Using a trigger which you can modify according to some schedule is much faster, or better yet, use some application-level logic to insert directly to the desired partition.