Description
Performance is an important aspect of an encryption library especially when you deal with large datasets.
Ive been doing perf tests of AWS Encryption SDK for different languages and found that the Go implementation is horribly slow.
I’ve run various test with file sizes between 1MB all the way to 5GB. Here is one test result that summarizes what I’m seeing. The test encrypts then decrypts 10 50MB files. I ran the entire test 5 times and took averages.
Language Performance
C = 9 seconds
Python = 14 seconds
Go = 83 seconds
I was shocked that Go performed that poorly given that I have tested the AWS S3 Encryption Client fo Go and it is much faster than a similar test I’ve done using the AWS Encryption SDK and streaming encrypted data to the AWS S3 Client.
I’ve read that the priority is to support more languages which I understand. I was delighted to see that Go was added earlier in the year but really disappointed after doing these tests. Unfortunately we can’t use the Go implementation since it adds 6 to 10 X processing time.
Is there any plan to improve this aspect?