Я хочу, чтобы сериализовал свой набор данных в JSON.Ускорение JSON Сериализация от C# до JSON
Вот фрагмент кода моего ASMX сериализовать объект
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetProviderMemberDetail(string jsonString)
{
BPMember bp = new BPMember();
List<BOProvider> listProvider = bp.GetProviderMemberDetail(jsonString);
return ConvertToSerializedJson(listProvider);
}
Вот что ConvertToSerializedJson делает
public string ConvertToSerializedJson(Object listBO)
{
string jsonReturn = String.Empty;
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
jsonReturn = serializer.Serialize(listBO);
return jsonReturn;
}
Количество данных, которые я должен сериализовать много, примерно 200,000 Данные.
Я пробовал этот метод, мой браузер повесился и не ответил, мне нужно подождать 6 минут.
Вторая попытка, я попробовал функцию сериализатора из Newtonsoft.Json, добавил
using Newtonsoft.Json;
и изменения кода сериализатора с
return JsonConvert.SerializeObject(listProvider);
Это ускорить немного, но делает мой браузер почти повесить тоже. Для завершения всей сериализации требуется 4 минуты.
Вопрос в том, как я могу ускорить сериализацию? Мой запрос занимает всего 4 секунды, чтобы завершить выполнение запроса и получить данные из БД. Тот, который занимает много времени, - это процесс сериализации. Есть ли какая-нибудь функция, которая будет работать быстрее этого? Пожалуйста, опубликуйте библиотеку имен или функцию и контрольную точку, я обновлю это сообщение, если у меня появятся хорошие существенные изменения.
Cheers.
ОБНОВЛЕНО Вот почему я люблю вас, ребята, у меня есть скорость вверх, с советами от вас добрых-парней, а вот то, что я «твик» немного.
Как сказал @Saravanan, я уменьшил все неиспользованные (или с небольшой частотой) на моем BO. Это была успешная настройка. от 300 секунд (5 минут) до 18 секунд.
Как заявлено @sanguaire, я пытаюсь использовать библиотеку fastJSON (download here), скомпилировать в dll, добавить ссылку на мой проект и эту скорость немного.
Время, необходимое для извлечения 200 000 данных для меня, составляет от 14 секунд до 18 секунд. Это мой ориентир с 17 колонками.
Спасибо за ребят мнения. Извините за задержку с ответом. Я буду (если мои баллы достигнут уровня голосов) проголосуйте за оба ответа.
насколько велик ваш объект bo и он вложен? – Saravanan
@Saravanan У него есть 50 атрибутов, только 'code {get; задавать; } 'для всех членов. Он имеет 50 атрибутов, но в моем случае я использую только 10 атрибутов. Влияет ли атрибут? Так что я сделаю новый BO с меньшим членом, потому что текущий объект члена BO для моей команды использует – WhiteCrow
определенно, это будет иметь влияние ... также, я считаю, что атрибут - это простой тип ... в этом случае это поможет – Saravanan