Во-первых, ваш код - беспорядок. Отступ неясен, и iRow
увеличивается, если находится в цикле, когда находится внутри For Each
в отчетах. Я подозреваю, что вы перебираете одни и те же данные снова и снова.
Во-вторых, в каждой строке вы снова и снова проверяете типы столбцов. Теперь, поскольку props
не назначено внутри списка, значительная оптимизация будет заключаться в том, чтобы удалить IsInt
и IsDate
тесты, каким-то образом кэшируя, какие у них типы.
Кроме того, если вы можете предварительно выделить все ячейки для одной строки перед циклом по свойствам, вы можете получить хороший прирост производительности!
Однако, как уже отмечали другие, ничего в этом не изменит сложности вашего кода. Он всегда останется O(number of rows * number of cells)
, т. Е. При удвоении объема данных следует ожидать удвоения времени вычислений.