After posting the first AX tutorial about Multiple Selection options in Dynamics AX we had a very interesting discussion about what's best to use in DAX at www.axForum.info
After this discussion, I decided to dig into the issue some more and see for myself, what is the best choice here.
So I modified the previous project a little bit: (you can download it here)
- Added a Server-Based class that does all the processing of selected lines
- Added a temporary table, tmpInventTable, consisting only of one field, ItemId.
- Added a job - an approximate way to determine the memory wastes for filling different types of objects.
- Added 2 tab pages to the form, so the form now allows five tipes of processing:
- Using a Set
- Using a Set (the query uses a JOIN)
- Using a Temporary Table
- Using a Temporary Table (the query uses a JOIN)
- Using standard DAX way with multiselecting records
The good thing is that now everyone can try out the different options and choose what is most appropriate for his specific needs.
After this, I also did a test run on a 3-tier installation and on a 2-tier installation.
Here are the Memory test results: (the first is in 2-tier, the second - in 3-tier configuration)
Here are the Processing test results: (the first is in 2-tier, the second - in 3-tier configuration)
The results of my tests can also be found at the homepage of this tutorial.
As you can see from the results, the 3-tier environment provides more balanced results. And in 2-tier I got 25 to 60!!! times increase on Processing tests when not using joins. I would love to know what your resuls will be.
Filling in data is also slightly slower when using Temporary Tables, but the difference is not that great, especially if you take into consideration the amount of records inserted into it (up to 100 000)
You comments and suggestions are very welcome.