1 | | It seems that in some cases such as: |
2 | | Modelica.Electrical.Spice3.Examples.Spice3BenchmarkFourBitBinaryAdder |
3 | | we do not detect that we have static arrays with several dimensions |
4 | | and we generate code to build them one row at a time during runtime. |
5 | | This was detected for C++ runtime but I guess is the same for the C runtime. |
| 1 | The one model `Modelica.Electrical.Spice3.Examples.Spice3BenchmarkFourBitBinaryAdder` dominates the time needed for testing MSL3.2.1 without producing good results. |
| 2 | |
| 3 | The C runtime takes 6m40s to simulate that model. Afterwards the verification of 46/47 signals fails. Looking at the results, it appears possible that the C runtime doesn't appropriately adapt to the extreme short `experiment(StopTime=1e-006, Interval=1e-009)`. |
| 4 | |
| 5 | The C++ code generation takes 4m3s in the Templates phase (opposed to 20s for C code generation). C++ generates code for 171 algebraic loops (two code files for each of them). Many of the loops have a dimension of 1. See: |
| 6 | {{{ |
| 7 | $ grep _dimAEq OMCpp*FourBit*Algloop*.cpp |
| 8 | }}} |
| 9 | Many of those are linear (checked Algloop 825, 920, 938, ...). |
| 10 | |
| 11 | Shouldn't linear algebraic loops of dimension 1 be treated more efficiently? |