Recently Objective Systems ran some benchmark tests to see which of the languages ASN1C generates performs the fastest and how the other languages compare to the fastest language. For each language we ran the same three benchmark tests, all of which use PER encoding:

  1. J2735, using the SAE J2735 ASN.1 specifications
  2. Megaco, using the Media Gateway Control ASN.1 specifications
  3. S1AP, using the S1 Application Procotol ASN.1 specifications

This table shows how the languages compare to C:

Language Program Encode Difference from C Decode Difference from C
-------- ------- ------------------------ ------------------------
Java     J2735     6.94 times slower       14.26 times slower
         Megaco    3.17 times slower        3.14 times slower
         S1AP      6.44 times slower       14.19 times slower
C#       J2735     5.79 times slower        9.32 times slower
         Megaco    2.86 times slower        3.22 times slower
         S1AP      4.72 times slower       18.49 times slower
Python   J2735     6.43 times slower        5.08 times slower
         Megaco  111.61 times slower      100.93 times slower
         S1AP    119.91 times slower      130.95 times slower
Go       J2735    12.43 times slower        8.19 times slower
         Megaco   10.82 times slower        4.46 times slower
         S1AP      7.85 times slower        9.16 times slower

In all cases the ASN1C run-time code that was used did not do any license checking; we usually refer to these run-time distributions as unlimited run-time distributions.

Note that we didn't do a benchmark run for C++ since we figured the results would be very similar to the results for C.

Also note that for the C# testing we used a run-time DLL that was built with a new optimization technique that we haven't used previously. For current ASN1C customers who have an unlimited C# run-time distribution, we can make this optimized run-time DLL available to anyone who is interested. In ASN1C v8.0 the C# run-time in the distributions will be arranged more similarly to the C and C++ run-time, and C# run-time distributions will have both the current run-time assembly and the newer optimized run-time assembly.


Published

Category

ASN1C

Tags