А конкретно по вашей ситуации:
1. На производительность вообще забейте, пока не окажется, что именно в таком-то месте бутылочное горлышко.
2. Общий принцип — не кидать исключение, если ситуация не исключительная.
К примеру, если это в принципе нормально, что карт больше, чем нужно, то кидать исключение не нужно, а нужно обработать эту ситуацию.
А если такого происходить не должно, и всё из-за того, что запрос сформирован неверно, — тогда стоит кидуть IllegalArgumentException.