Из кода, который вы показали, вызовы new DataTable()
и операторы присваивания для обнуления dt1 и dt2 снова не имеют смысла.Единственная часть, которая вас интересует, это то, что возвращают GetInfo(i)
и GetData(i)
.Вы выделяете пустые объекты DataTable, когда в этом нет необходимости.
Мне интересно, возможно ли в вашем случае немного переосмыслить свой дизайн.Когда вы работаете с 30 000 записей, нереально делать несколько операций с базой данных для каждой записи.Я часто обнаруживал, что наибольшее снижение производительности при операциях, ориентированных на базы данных, вызвано введением нескольких операторов выбора, когда я мог бы сделать это в одном операторе.Думая в терминах операций set или batch, можно ли сделать один или два вызова базы данных, чтобы получить обратно список элементов и выполнить итерацию по ним?Если вы устраняете проблему с производительностью, это было бы неплохо для начала.
Прежде чем приступить к внесению изменений, измерьте и проверьте, какая операция занимает больше всего времени, введя код синхронизации и отслеживая приложение, чтобы увидетьсколько памяти это на самом деле использует.Сосредоточьте свои усилия на оптимизации самой медленной части.Я надеюсь, что вы найдете это полезным =) Я не имею в виду, что это каким-либо образом покровительствует.