嵌套表的ITextSharp性能

时间:2015-03-23 09:33:20

标签: c# itextsharp itext

对于我的项目,我需要为PDF文档绘制一些通用控件。 我正在转换的控件可以有子控件。有时,它们可以达到12级递归。 为了在PDF中反映这种行为,我选择了PdfPTable类作为我的控件的基类,因为它们可以有子控件(单元格)。

这一切都很好,但是当递归深度增加时变得非常慢。这是我在性能测试中使用的代码:

private const int MaxDepth = 12;
    private static void NestTable(PdfPCell cell, int level)
    {
        //check max depth
        if (level == MaxDepth)
        {
            return;
        }

        //create new table with one column
        var table = new PdfPTable(1);

        //Display the current depth in the cell
        var mainCell = new PdfPCell { Phrase = new Phrase(level) };

        //recursion here:
        NestTable(mainCell, level + 1);

        //add the cell to the control tree
        table.AddCell(mainCell);

        //add table to the parent cell
        cell.AddElement(table);
    }

以下是我用此代码创建表格的时间片段,然后针对 MaxDepth 的不同值调用document.Add(table)

7: 91 ms
8: 168ms
9: 356ms
10: 920ms
11: 978ms
12: 2757ms
13: 8358ms
14: 25449ms

这些时间对我来说似乎是不可接受的。 有谁知道如何提高嵌套表的性能? 或者我应该避免使用表(PdfPTable)并使用另一个具有相同输出的类吗?

感谢任何帮助!

0 个答案:

没有答案