A (mostly) forgotten technology: ASN.1
Today’s post will be short and sweet. I wanted to write a rant about how we’re permanently reinventing things in the software industry and how programmers prefer to rewrite things from scratch rather than take the time to learn an existing project / codebase / standard. This was mainly inspired by me thinking about Protobuf vs. ASN.1.
But then I calmed down and realized that things are always more complicated, even in the world of 1’s and 0’s. Thus I’ll leave you with the results of the jvm serializers benchmark extended to include JAC (the Java Asn.1 Compiler). You can find the sources on my GitHub account.
Ser Time+Deser Time (ns)
The times are nothing to write home about (it’s almost the slowest from the binary serializers). To its defense it hasn’t been updated for more than 6 years now and tries to be flexible rather than performant. See also this discussion about Protobuf vs. ASN.1. I still believe that it’s possible to write a high-performance Java ASN.1 implementation, it just hasn’t been done (I tested a commercial library too and it came out slower than JAC).