srinualluri Ответов: 2

200000 записей преобразование из таблицы данных в csv сталкивается с проблемой на сервере развертывания


Я конвертирую 200000 записей преобразование таблицы данных в csv на моем локальном сервере виртуальной машины(Azure Cluster) занимает 36 секунд, а после развертывания на сервере Azure-1 минуту 20 секунд ..

Не могли бы вы, пожалуйста, предложить по этому поводу

Как решить эту проблему.

Что я уже пробовал:

То StringBuilder класса StringBuilder новое окно инструментов();
// Возвращает Null только в том случае, если структуры нет.
если (объект DataTable.Столбцы.Количество == 0)
возвращать null;

по каждому элементу (объекту Коль в объект DataTable.Столбцы)
{
if (col == null)
класс StringBuilder.Добавлять(",");
еще
класс StringBuilder.Функции append("\"" + колонка.Метод toString().Заменить(@"""", @"""""") + "\",");
}
то StringBuilder.Заменить (",", "Среда".Перевод строки, то StringBuilder.Длина - 1, 1);
по каждому элементу (д-р объекта datarow в объекте DataTable.Строки)
{
foreach (столбец объекта в dr.ItemArray)
{
if (столбец == null)
класс StringBuilder.Добавлять(",");
еще
класс StringBuilder.Добавить (столбец"\"" +.Метод toString().Заменить(@"""", @"""""") + "\",");
}
то StringBuilder.Заменить (",", "Среда".Перевод строки, то StringBuilder.Длина - 1, 1);
}

MadMyche

Как насчет того, чтобы показать свой код?

Maciej Los

Предложить что?

srinualluri

То StringBuilder класса StringBuilder новое окно инструментов();
// Возвращает Null только в том случае, если структуры нет.
если (объект DataTable.Столбцы.Количество == 0)
возвращать null;

по каждому элементу (объекту Коль в объект DataTable.Столбцы)
{
if (col == null)
класс StringBuilder.Добавлять(",");
еще
класс StringBuilder.Функции append("\"" + колонка.Метод toString().Заменить(@"""", @"""""") + "\",");
}
то StringBuilder.Заменить (",", "Среда".Перевод строки, то StringBuilder.Длина - 1, 1);
по каждому элементу (д-р объекта datarow в объекте DataTable.Строки)
{
foreach (столбец объекта в dr.ItemArray)
{
if (столбец == null)
класс StringBuilder.Добавлять(",");
еще
класс StringBuilder.Добавить (столбец"\"" +.Метод toString().Заменить(@"""", @"""""") + "\",");
}
то StringBuilder.Заменить (",", "Среда".Перевод строки, то StringBuilder.Длина - 1, 1);
}

srinualluri

Я использую приведенный выше код для генерации CSV-файла из datatable . на моем локальном ПК это заняло 36 секунд а после развертывания на сервере разработки это заняло 1 мин 20 секунд

Не могли бы вы, пожалуйста, предложить по этому поводу ..Пожалуйста предоставьте при необходимости любые изменения кода

F-ES Sitecore

Используйте более быстрый сервер.

2 Ответов

Рейтинг:
15

OriginalGriff

Без кода или какой - либо идеи о том, как вы это делаете, мы не можем иметь ни малейшего представления о том, как вам помочь-и вам нужно сделать некоторую подготовительную работу, прежде чем мы сможем начать помогать в любом случае.

Первое, что вам нужно сделать, это установить базовый уровень. Используйте Класс секундомера[^] точно рассчитать время фактического кода и выполнить одну и ту же работу три или четыре раза, чтобы получить хорошее значение avaerage. Теперь у вас есть ценность, с которой можно работать, чтобы оценить любые изменения.

Теперь добавьте больше экземпляров секундомера, чтобы сузить круг тех частей кода, которые требуют времени, чтобы вы могли сосредоточиться на них. Например, если один цикл занимает 0,75 секунды, а другой-0,001, то бессмысленно вообще смотреть на второй!
Продолжайте добавлять секундомеры до тех пор, пока у вас не будет надежной базы данных о том, где вы кодируете медленно, и может быть очевидно, что вам нужно сделать. Если нет, то вы знаете, какой раздел(ы) показать нам и объяснить, насколько он медленный ...

Но есть вероятность, что сервер занят другими делами, а ваша машина разработчиков-нет.


Рейтинг:
0

Aydin Homay

Привет,
Я полностью согласен с решением, которое предоставил OrginalGriff, и, кроме того, я рекомендую вам:

1 - Прочитайте эту статью, чтобы иметь четкое представление о накладных расходах на производительность famous .Чистые коллекции/структуры данных. Большие коллекции в C# (управляемый код) - Часть II[^].
2 - Не забывайте, что если вы запускаете свой код в операционной системе реального времени, вы всегда окажетесь в неопределенной ситуации, особенно когда имеете дело с производительностью на стороне сервера. Таким образом, наличие хорошего механизма регистрации производительности для отслеживания времени выполнения кода имеет решающее значение для поиска узких мест.

Овации,
Айдын