Повысить производительность EPPlus езда на велосипеде с помощью рабочих листов - PullRequest
0 голосов
/ 05 марта 2020

Я искал проблему производительности bottle шеи, и я был удивлен, обнаружив, что:

foreach (ExcelWorksheet ws in wb.Worksheets)
}

Ел почти в 2/3 времени.

Я сравнил вышеупомянутое с этим:

foreach (ExcelWorksheet ws in wb.Worksheets)
    MyMethod(ws);
}

Один без MyMethod занял: 7341, 5495, 5551 ElapsedMilliseconds

В то время как один с MyMethod занял : 9969, 9285, 8096 Прошедшие миллисекунды.

Есть ли способ улучшить это? Я ищу только те листы, которые видны, если это поможет.

Код, ведущий к вышеуказанному блоку кода:

Pack = new ExcelPackage(file);
ExcelWorkbook wb = pack.Workbook;

Stopwatch testsw = new Stopwatch();
testsw.Start();

foreach (ExcelWorksheet ws in wb.Worksheets)
    MyMethod(ws);
}

testsw.Stop();

Console.WriteLine("testsw " + testsw.ElapsedMilliseconds);

1 Ответ

0 голосов
/ 06 марта 2020

для меня

var fi = new System.IO.FileInfo(sourceFile);
using (var p = new ExcelPackage(fi))
{
    var sw = new System.Diagnostics.Stopwatch();
    sw.Start();
    var wslist = p.Workbook.Worksheets;
    foreach ( var ws in wslist)
    {
        Console.WriteLine(ws.Name);
    }
    sw.Stop();
    Console.WriteLine("sw " + sw.ElapsedMilliseconds);
}

занимает 209 миллисекунд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...