There is also the Filter Permissions (filter_perms) module.
Both this and the accepted answers are good solutions, I think for Drupal 7 (no need to change the accepted answer). I think the difference between Filter Permissions (filter_perms) and Fast Permissions Administration fpa is that the filtering provided by the fpa module is mainly (or perhaps totally) client-side based (I am guessing possibly that the entire module list is in the browser and client-side code provided with fpa filters this (perhaps using JS etc)). Whereas with filter_perms, the filter is submitted to the server-side, to the module in the Drupal site code which returns a filtered list.
My comparison of both is based on the following references:
from https://www.drupal.org/project/fpa :-
Optional integration with Filter permissions:
If you have a large number of permissions and roles, you might
experience memory limit issues when accessing the permissions page
that FPA is not designed to handle.
If you are experiencing these issues, it is suggested that you install
the Filter permissions module along side FPA.
from: https://www.drupal.org/project/filter_perms :-
If you aren't having performance issues due to massive
permissions/roles and want a nice filtering solution that works
entirely client side, Fast Permissions Administration is a slick
module that has a different approach than Filter Permissions but will
give similar benefits.
Also from my own experience of using filter_perms, the interface uses a html form based filter with a post to the server-side to send the filtering information.
As said, I think both modules are good solutions and therefore it would be for the site builder to choose.
The bottom line I think is that on the basis of being more client-side-based in filtering, fpa is the faster at filtering (as the name of the module suggests), but for sites with a large number of permissions it might not be scaleable if there are server-side memory limitations when rendering the page and also on the browser/client side if performance and memory there is limited.
Meanwhile although filter_perms might be perhaps a little slower as it uses a form submit to the server to filter, it would perhaps be more scaleable for a large amount of permissions if only the filtered subset are rendered on the server side and sent to be displayed in browser (e.g. out of memory fatal errors are less likely)
Both modules also have a Drupal 8 development branch, however I have not used this version at time of writing so could not advise on if there is available functionality in the Drupal 8 versions of the modules.