Aspose.Words сохраняет в PDF в первый раз медленно

Есть ли способ уменьшить время выполнения первого запуска метода Document.Save с помощью Aspose.Words?

Рассмотреть возможность:

for (var i = 0; i < 5; i++)
    Run();

static void Run()
{
    var sw = new Stopwatch();
    sw.Start();

    var doc = new Document();
    //doc.UpdatePageLayout(); // Makes no difference
    var memoryStream = new MemoryStream();
    doc.Save(memoryStream, SaveFormat.Pdf);

    sw.Stop();
    Console.WriteLine(sw.ElapsedMilliseconds);
}

Этот код выведет:

881
3
2
3
3

person Kristoffer Jälén    schedule 19.12.2019    source источник
comment
Вероятно, это связано с ленивой загрузкой .NET Framework библиотеки Aspose, а затем с самозапуском библиотеки. Что произойдет, если вы сначала загрузите его или выполните какое-либо другое действие с использованием библиотеки, а затем определите время?   -  person Dai    schedule 20.12.2019
comment
Кроме того, хорошей практикой является явное удаление всех объектов IDisposable, даже если это не является абсолютно необходимым для MemoryStream.   -  person Dai    schedule 20.12.2019


Ответы (1)


При первом запуске Aspose.Words инициализирует ресурсы, такие как шрифты, необходимые для рендеринга документа в PDF. UpdatePageLayout не имеет никакого значения, потому что он вызывается внутри, когда требуется макет документа — когда документ сохраняется в форматах с фиксированной страницей (PDF, XPS, Image, PS и т. д.) или если требуется оценить поля индекса (например, TOC или PAGE). .

В качестве обходного пути я могу предложить вам запустить такой код при запуске вашего приложения. Это инициирует необходимые ресурсы, и первый реальный вызов не займет много времени.

Document doc = new Document();
doc.UpdatePageLayout();

Раскрытие информации: я работаю в команде Aspose.Words.

person Alexey Noskov    schedule 20.12.2019