triforcely / Octave.NET

📈 More than cross-platform Octave process wrapper 🔬
MIT License
32 stars 7 forks source link

Faster ToOctave() implementations #2

Closed CptWesley closed 5 years ago

CptWesley commented 5 years ago

Why?

The current combination of aggregations and formatting is rather slow, in fact an array of 80.000 randomly generated doubles took about 40 seconds to be formatted into an octave vector string. This alternative implementation only took 47 milliseconds to create the same string. I initially wanted to test the difference on an array filled with zeroes of size 4.000.000, however after about 20 minutes I decided it was taking too long, while the implementation in this pull request only took 614 milliseconds.

What?

The .ToOctave() methods have been implemented with a StringBuilder loop which is considerably faster/more scalable than the current implementation present in the master branch.

triforcely commented 5 years ago

You are right, current implementation is far from optimal. I didn't really bother with optimizing the code because my solutions use small vectors (less than 100 items), so I didn't notice the problem. I did some benchmarks and I can see difference even with array of 10 items. Performance gain introduced by your commit is huge!

Thanks for contributing :)