Recursion bracketed; or Dyck words generation
C99, 105 bytes



i,j,s;f(n){for(char a[31]={};++i%(1&lt;&lt;2*n);s||puts(a))for(j=s=0;~s&amp;&amp;j&lt;2*n;)s+=1-(a[j]=40+(i&gt;&gt;j++)%2)%2*2;}


Iterates over all strings of 2n parentheses.

With piped output and compiler flag -O3, input n = 15 takes roughly 15.5 seconds on my machine. Memory consumption is 1.2 MB.

Test it on Ideone.