LPub3D Rendering Performance Improvement
2016-06-08, 12:48 (This post was last modified: 2016-06-08, 12:49 by Trevor Sandy.)
2016-06-08, 12:48 (This post was last modified: 2016-06-08, 12:49 by Trevor Sandy.)
Greetings - just wanted to say Travis' guidance to render images with LDView using the -SaveSnapshots=1 switch is showing a 75% increase in performance. This configuration renders multiple files using a single call. So with this 'Single Call' configuration on LPub3D, the entire parts list/bom is rendered with a single call and step models on a multi-step page are also rendered with a single call.
I have to add that this enhancement was quite complicated. Image attributes (height and width) are critical to the lowest level of LPub3D functionality and are processed on the fly as page components are constructed so to not generate images on the fly - so they can be included in a single call - was most complicated. Especially to design something that was not more expensive than the current performance cost. It's not good to rob Peter to pay Paul. Anyhow, I believe what I came up with is a good design and the results clearly show a performance credit.
So without further adieu, here is the evidence log for the model file below. (Model file credit: Philo):
Single Flat Page - LDView Single Call
"LDView" PLI single render call took 4660 milliseconds.
"LDView" CSI single render call took 923 milliseconds for step 1 on page 1
Single Flat Page - LDView normal Call
"LDView" PLI render call took 21474 milliseconds.
"LDView" CSI render call took 1017 milliseconds for step number 1 on page number 1
You can see the overall elapsed time was 22,491 milliseconds for the normal call where every bom part is rendered by an individual call. With a single call for the entire bom, the overall elapsed time is reduced to 5,583 milliseconds.
Test model used:
Very big thanks to Travis for his guidance.
P.S. The next release of LPub3D is imminent - wrapping up testing.
Cheers !
I have to add that this enhancement was quite complicated. Image attributes (height and width) are critical to the lowest level of LPub3D functionality and are processed on the fly as page components are constructed so to not generate images on the fly - so they can be included in a single call - was most complicated. Especially to design something that was not more expensive than the current performance cost. It's not good to rob Peter to pay Paul. Anyhow, I believe what I came up with is a good design and the results clearly show a performance credit.
So without further adieu, here is the evidence log for the model file below. (Model file credit: Philo):
Single Flat Page - LDView Single Call
"LDView" PLI single render call took 4660 milliseconds.
"LDView" CSI single render call took 923 milliseconds for step 1 on page 1
Single Flat Page - LDView normal Call
"LDView" PLI render call took 21474 milliseconds.
"LDView" CSI render call took 1017 milliseconds for step number 1 on page number 1
You can see the overall elapsed time was 22,491 milliseconds for the normal call where every bom part is rendered by an individual call. With a single call for the entire bom, the overall elapsed time is reduced to 5,583 milliseconds.
Test model used:
Very big thanks to Travis for his guidance.
P.S. The next release of LPub3D is imminent - wrapping up testing.
Cheers !