executeWithRegions call significantly slower after Aspose.Words upgrade

We have recently purchased an updated license and upgraded to version 15.7.0 of Aspose Words for Java from version 13.4.0. After doing this we have noticed a significant decrease in performance when running the “executeWithRegions” command.


Using a relatively simple test with a merge on a single-table with various numbers of individual merge fields these are the results we got:

-------------------------

13.4.0 Running merge 1000 times took 39.56 seconds

15.7.0 Running merge 1000 times took 80.71 seconds

Diff: 41.15 seconds, 104% increase

-------------------------

13.4.0 Running merge 2000 times took 174.21 seconds

15.7.0 Running merge 2000 times took 244.35 seconds

Diff: 70.14 seconds, 40% increase

-------------------------

13.4.0 Running merge 2200 times took 463.35 seconds

15.7.0 Running merge 2200 times took 697.64 seconds

Diff: 234.29 seconds, 50% increase

-------------------------

Any numbers larger than that cause both 15.7.0 and 13.4.0 to become unusable. In the above tests we see at least a 40% increase in run time for simple merges. In our actual application we are seeing on average a 100% increase of running time.

This decrease in performance greatly affects our use case for Aspose.Words. We’d like the performance to be fixed to at least be as good as it was in 13.4.0 (although obviously faster is better). Also if there are any tips/tricks in using merge fields/regions that could help us improve performance that would be much appreciated.

I’ve attached the code and template used to generate the above numbers.

Thank you,

-Dylan Gulick
Jama Software

Hi Dylan,

Thanks for your inquiry. I have tested the scenario and have managed to reproduce the same issue at my side. For the sake of correction, I have logged this problem in our issue tracking system as WORDSNET-12305. I have linked this forum thread to the same issue and you will be notified via this forum thread once this issue is resolved.

We apologize for your inconvenience.

Hello Tahir. I was wondering if there was an update to this issue. Perhaps an estimated time when this will be fixed? This is a critical path workflow for our product, and we very recently just purchased a new license under the assumption that we would be able to use the latest version, so now that’s looking like wasted money. It’s making it hard to justify future Aspose purchases when we can’t use what we’ve already paid for. Thank you for any additional information you can provide on this issue.


-Dylan Gulick
Jama Software

Hi Dylan,

Thanks for your inquiry. I would like
to share with you that issues are addressed and resolved based on first
come first serve basis.

Normally when an issue is reported by a customer it is added to the pool of current issues being worked on by our developers and is analysed in a timely manner. However due to the nature of some bugs and the number of features we are working on, this doesn’t always mean we can fix every bug within a short time after it’s reported.

I have requested the product team to share the ETA of this issue. As soon as any information is shared by them, I will be more than happy to share that with you.

Thank you for your patience and understanding.

The issues you have found earlier (filed as WORDSJAVA-1134) have been fixed in this .NET update and this Java update.


This message was posted using Notification2Forum from Downloads module by aspose.notifier.

Unfortunately it does not appear this issue has been fixed at all. In fact it has been made quite a bit worse. I re-ran the same sample code I’ve given you with the latest version, here are the results:


15.9.0 Running merge 1000 times took 225.7 seconds

Diff from 13.4.0: 186.14 seconds, 470% increase
Diff from 15.7.0: 144.99 seconds, 180% increase


Running it for 2000 or 2200 items gave OutOfMemoryErrors.

I am very confused about how you could claim that this issue was resolved, when I’ve already given you the code to reproduce the problem that shows it is still broken. Not just broken but actually worse.

As I mentioned before; we purchased a new license so that we would be able to take advantage of the latest version, but the product is currently unusable for us. We are now in a position where we are removing features from our product because we cannot use the functionality of the most recent versions of Aspose Words because of these issues. This is after we delayed a release of our product because we were told that this issue would be resolved in the October Aspose Words release.

I’ll be talking with my product team about where we go from here.

-Dylan Gulick
Jama Software

Hi Dylan,

We are really very sorry for your inconvenience. I have logged this issue as WORDSJAVA-1184. You will be notified via this forum thread once this issue is resolved.

We apologize once again for the inconvenience.

As Dylan mentions above, this is extremely disappointing. The amount of work we’ve had to do on our end due to the issue, and more importantly the incorrect fix is unacceptable.


If this is something we can help test before you release it, please let us know. We don’t have time to be told something will be fixed, wait for the release, install it and then find out it isn’t actually fixed.

In this case, we will now have to wait several months to get critical functionality released to our customers.

Hi Jeremy,

Thanks for your patience. We do understand your situation. Our product team is working over this issue. We will inform you via this forum thread once there is any update available on this issue.

We apologize for the inconvenience.

Hi Dylan,

dgulick:

15.9.0 Running merge 1000 times took 225.7 seconds

Diff from 13.4.0: 186.14 seconds, 470% increase
Diff from 15.7.0: 144.99 seconds, 180% increase
Running it for 2000 or 2200 items gave OutOfMemoryErrors.

Could you please share the heap size which you are using while testing this scenario?

My heap size is set at 1.8GB

I’ve attached an image of a graph tracking my memory usage while running the attached code with 1000 items. As you can see it pretty quickly reached the 1.8GB heap limit (1.820GB to be precise) and then remains maxed out until the end of the test.



Hi Dylan,

Thanks for sharing the detail. We will inform you via this forum thread once this issue is resolved.

The issues you have found earlier (filed as WORDSJAVA-1184) have been fixed in this .NET update and this Java update.


This message was posted using Notification2Forum from Downloads module by aspose.notifier.

Unfortunately it still does not appear this issue has been resolved. I’ve re-run the exact same example code I’ve given you yet again with this new version and here are my results:


15.10.0 Running merge 1000 times took 167.74 seconds

Diff with 13.4.0: +128.18 seconds,
Diff with 15.7.0: +87.03 seconds,
Diff with 15.9.0: -57.96 seconds

While it appears you’ve fixed whatever broke in 15.9.0 to make it even worse, you still haven’t gotten anywhere near acceptable performance levels, and it’s gotten even worse since we reported the issue to you.

Frankly this is getting ridiculous. This is twice now you’ve told us that the issue has been resolved and it hasn’t been. It’s been incredibly simple to reproduce the issue on our end, so I don’t know why you aren’t able to run the same code to verify before telling us it has been resolved.

Please let me know if there’s anything we can do to help you diagnose this issue.

-Dylan Gulick
Jama Software

Hi Dylan,

Thanks for your inquiry.


We have tested the same scenario and have not found the shared issue. We have tested this scenario using eclipse, Jdk 1.8 (64 bit) at Windows 7 (64 bit). Executing mail merge 1000 times take 113.56 seconds. See the attached image for detail. Please make sure that you are using latest version of Aspose.Words for Java 15.10.0.

Yes, that seems in line with what we are seeing. The problem is the performance of executing mail merge has degraded substantially since the version we are currently using in production (13.4.0).


If you look at my original post that opened this issue you’ll see that it took approximately 40 seconds to mail merge 1000 times, the version we tried to upgrade to (15.7.0) took twice as long at around 80 seconds. 15.9.0 slowed it down even more to 225 seconds (over 5 and a half times as long as 13.4.0). 15.10.0 helped and as you say got it back down to 110-160 seconds, but even that is still worse than when I reported the issue to you and 4 times as long as it took in 13.4.0.

-Dylan Gulick
Jama Software

Hi Dylan,

Thanks for your inquiry.


We have again tested the scenario using older version of Aspose.Words 13.4.0 and noticed that this version takes around 137 seconds. Check the attached screenshot for detail. We suggest you please increase the heap size and test the scenario.

Please share some detail about your Use Case which you are using for mail merge to create huge Word document. Please share your environment detail (e.g Operating system, Jdk version etc) at which you are testing this scenario.

Aha! I think the issue may be related to the test doc I provided. For my testing of 13.4.0, 15.7.0 and 15.9.0 I used documents that contained the same number of merge fields as the number of fields merged, but my testing for 15.10.0 only used the one I provided here which had the max number of 2200 fields (since that was the last number I tested with before uploading), which was affecting the timing even when only actually running 1000 merges. I’ve put together a zip file with a Java class that can reproduce the issues using the correct Word docs with appropriate numbers of merge fields. You just need to provide the Aspose Words jar and a valid Aspose Words license string.


I’ve rerun the tests using this class and included the results in the zip file. The tests verify the original issue and show that 15.10.0 does indeed improve the performance back to around what we were seeing in 13.4.0. I have included the new results for testing against 13.4.0, 15.7.0 and 15.10.0 in both Java 7 and Java 8 in the zip file. (Operating System is Windows 8.1, 64bit)

The OutOfMemoryError: GC overhead limit exceeded issue exposed by running the tests with 15.9.0 still exists, but it takes a larger number of merge fields to trigger it. This is still concerning, since the unbounded growth of memory usage has the possibility to wreck any application Aspose Words is used inside of, but it appears the same issue exists in 13.4.0 so given these new numbers I’m satisfied saying that the latest Aspose Words is usable for us.

Our usage scenario is using Merge Fields to allow our users to create custom templates that are then used to export customer data to the Word format. Each template can contain up to two dozen merge fields or so (although there is no technical limitation in place), each representing a data point in our system, and the template could be used up to thousands of times depending on how many items are being exported.

Let me know if you have any other questions of our use case or test scenario.

I appreciate the help and responses to this issue, and I apologize for the incorrect numbers from my last comment. Thanks for your help in resolving this problem.

-Dylan Gulick
Jama Software

Hi Dylan,

Thanks for your inquiry. Could you please share some detail about your Use Case? We will then provide you more information about your query.

  • Please share the test case for which you need such a huge document
  • Are you using the shared code just for tests or you are composing some kind of log file?