The underlying big integer functionality includes Karatsuba multiplication. Karatsuba has turned out not to be advantageous for ordinary cryptographic operations, perhaps because our long multiplication is very fast. It may be useful, however, for other applications of big integer arithmetic. With or without Karatsuba, our modular exponentiation is several times faster than the one in SJCL, as reported in section 7.1 of the documentation, and in an earlier blog post related to an early version of the library that was not released. Facilities included with the library allow you to test the performance of modular exponentiation and DSA on your own machines, as explained in the documentation.
A design goal of the library has been to keep its interface simple and easy to use. The library makes no use of ES6 classes and minimal use of objects. The API is synchronous, in contrast with the W3C Web Cryptography API, where API function calls return promises. Most cryptographic operations are fast and need not be performed in the background. When background processing is needed, such as for DSA domain parameter generation, or for applications that make use of the big integer portion of the library to manipulate very large big integers, it can be performed by a web worker. Examples of how to use web workers to perform long computations can be found in DSAPerfTesting.
Extensive documentation with typeset formulas
The library comes with extensive documentation in a PDF file with references to the cryptography literature. Mathematical formulas used to describe API functionality are typeset in LaTeX for readability.
In the file pjcl-withArgChecking.js most of the API functions are augmented with code that checks the validity of their arguments, with a substantial reduction in performance. Substituting that file for pjcl.js during development may help with debugging.
A PJCL User Forum is available for asking questions and making comments.