gpt4 book ai didi

performance - iTextSharp PDFWriter 瓶颈

转载 作者:行者123 更新时间:2023-12-03 01:58:50 36 4
gpt4 key购买 nike

因此,我将获取 10000 个 2 页 pdf 文件,并使用 iTextSharp 将它们合并为一个。

这是我正在做的一些松散代码:

Document document = new Document();
using(PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("merged.pdf", FileMode.Create)))
{

PdfContentByte cb = writer.DirectContent;
PdfReader reader = null;
foreach(string thisFile in files)
{
reader = new PdfReader(thisFile);
var page1 = writer.GetImportedPage(reader, 1);
var page2 = writer.GetImportedPage(reader, 2);
cb.AddTemplate(page1, 1f, 0, 0, 1f, 0, 0);
cb.AddTemplate(page2, 1f, 0, 0, 1f, 0, 0);
}
}

我试图了解瓶颈可能出现在两个地方。我运行了一些性能测试,最慢的进程自然是使用 PdfReader 读取每个文件以及保存文件的处置,它是从 using PdfWriter block 调用的。

在此过程中,所有 16 个核心的利用率约为 25%。我尝试使用固态硬盘代替 SATA 7.2k rpm 硬盘,速度几乎完全相同。

如何加快此过程?没有分配任务,因为计算机之间的读取速度会更慢。即使这意味着更改为另一种语言、库或编写较低级别的内容,我也需要比目前更快地完成此过程。目前合并大约需要 10 分钟。

最佳答案

所以我终于解决了这个问题。以下是我的性能结果,其中获胜方法的代码如下:我在所有这三个测试中使用了同一台机器

  • iTextSharp - 直接在 pdfwriter 上生成内容
    • Windows 2008 64 位
    • NTFS分区
    • 处理过程中每秒合并约 30 个页面
    • 最后关闭 pdfwriter 时会产生大量开销
    • 每秒 25 页
  • iTextSharp - PDF复制
    • Windows 2008 64 位
    • NTFS分区
    • 将输出写入磁盘而不是内存,因此最终没有开销
    • 每秒 40 页
  • iText (java) - PDFCopy(完全相同的代码,只是移植到 java)
    • Ubuntu 12.04 64 位服务器版
    • EXT3 分区(很快就会尝试 ext4)
    • 还在处理过程中将输出写入磁盘
    • 每秒 250 页

还没有尝试弄清楚为什么相同的代码在 Ubuntu 上的 java 中运行得更快,但我会接受它。一般来说,我定义了该函数之外的所有主要变量,因为在此过程中它被调用了 36000 次。

public void addPage(String inputPdf, String barcodeText, String pageTitle)
{
try
{
//read in the pdf
reader = new PdfReader(inputPdf);

//all pdfs must have 2 pages (front and back).
//set to throw an out of bounds error if not. caught up stream
for (int i = 1; i <= Math.Min(reader.NumberOfPages,2); i++)
{
//import the page from source pdf
copiedPage = copyPdf.GetImportedPage(reader, i);

// add the page to the new document
copyPdf.AddPage(copiedPage);
}

//cleanup this page, keeps a big memory leak away
copyPdf.FreeReader(reader);
copyPdf.Flush();

}
finally
{
reader.Close();
}
}

关于performance - iTextSharp PDFWriter 瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148284/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com