Если содержимое строки десериализуется в список, то не выгоднее ли по времени делать десериализацию в массив (не проверял, может, можно и в кортеж)? Или, наоборот, т.к., возможно, будет сначала сериализация в список, а потом ToArray()? Или все-таки сначала идет подсчет количества элементов и создается массив с равным Length и затем массив заполняется? Примерно такой же вопрос по выбору класса, или структуры, кортежа, или массива, если есть несколько чисел: https://json2csharp.com/ предлагает создавать класс. Если создавать массив или структуру, то не будут ли они созданы после создания класса? Вероятно, разные обработчики Json работают по разному, но все-таки кто как десериализует?
конечно выгодней массив. т.к. список удваивает кажется емкость при исчерпании.
как парсится список тут сложно сказать, в xml помню было четкое разделение Dom (полностью грузит и потом парсит) и потоковые, очень быстрые отдающие элементы по мере парсинга потока.
посмотрите исходики парсера на гите.
Здравствуйте, Serginio1, Вы писали: S>Лучше десериализовывать в IEnumerable c использованием yield
А чем лучше? Быстрее происходит десериализация? И в дальнейшем, разве обход IEnumerable быстрее обхода массива?
Здравствуйте, Passerby, Вы писали:
P>Здравствуйте, Serginio1, Вы писали: S>>Лучше десериализовывать в IEnumerable c использованием yield P>А чем лучше? Быстрее происходит десериализация? И в дальнейшем, разве обход IEnumerable быстрее обхода массива?
Зависит от размера. Если размер небольшой по пофиг массив или лист. А вот если размер большой, а хранить тебе массив не нужно то
IEnumerable самое то.
Енумератор предпочтительнее ибо ты сам можешь организовать где и как хранить. Хоть в БД.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали: S> Зависит от размера. Если размер небольшой по пофиг массив или лист. А вот если размер большой, а хранить тебе массив не нужно то S>IEnumerable самое то.
IEnumerable это интерфейс коллекции. Нет коллекции — нет IEnumerable. Т.е. коллекция все равно хранится. Только доступ к ней происходит медленнее. Мне критично быстродействие. Т.е. все же или List или массив, если перед этим не создается List и затем ToArray(). И был попутный вопрос про кортеж: что быстрее в доступе и создании: кортеж или массив? С одно стороны массив, т.к. не надо создавать структуру, а с другой стороны ссылочный тип нагружает сборщик мусора. В общем-то вопрос универсален: для возврата из метода нескольких однотипных чисел, что производительнее: массив или кортеж? Вопрос не касается удобства пользования, а только производительности.
Здравствуйте, Passerby, Вы писали:
S>> Зависит от размера. Если размер небольшой по пофиг массив или лист. А вот если размер большой, а хранить тебе массив не нужно то S>>IEnumerable самое то. P>IEnumerable это интерфейс коллекции. Нет коллекции — нет IEnumerable. Т.е. коллекция все равно хранится.
IEnumerable<int> GetNumbers()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
Здравствуйте, Passerby, Вы писали:
P>Здравствуйте, Serginio1, Вы писали: S>> Зависит от размера. Если размер небольшой по пофиг массив или лист. А вот если размер большой, а хранить тебе массив не нужно то S>>IEnumerable самое то. P>IEnumerable это интерфейс коллекции. Нет коллекции — нет IEnumerable. Т.е. коллекция все равно хранится. Только доступ к ней происходит медленнее. Мне критично быстродействие. Т.е. все же или List или массив, если перед этим не создается List и затем ToArray(). И был попутный вопрос про кортеж: что быстрее в доступе и создании: кортеж или массив? С одно стороны массив, т.к. не надо создавать структуру, а с другой стороны ссылочный тип нагружает сборщик мусора. В общем-то вопрос универсален: для возврата из метода нескольких однотипных чисел, что производительнее: массив или кортеж? Вопрос не касается удобства пользования, а только производительности.
Нет IEnumerable это System.Collections.Generic.IEnumerator<out T> GetEnumerator () и главное в нем MoveNext() и Current
Десериализуя список по частям ты как раз и реализуешь MoveNext() и Current, которые по времени будут значительно меньше чем затраты на десериализацию.
Ну System.ValueTuple это структура понятно, что она выгоднее
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали: S> Нет IEnumerable это System.Collections.Generic.IEnumerator<out T> GetEnumerator () и главное в нем MoveNext() и Current
А что нет? IEnumerable это интерфейс. А System.Collections.Generic.IEnumerator<out T> GetEnumerator () это реализация интерфейса. S>Десериализуя список
Десериализуется не список, а строка. Список это и есть коллекция, которая создается из строки при ее десериализации. Строка все равно должна десериализоваться в какую-нибудь коллекция, а потом уже к этой коллекции можно применять IEnumerable. К строке же IEnumerable не применить. S>Ну System.ValueTuple это структура понятно, что она выгоднее
Это если сначала не создается список, а из него делается кортеж. А не сразу кортеж.
Здравствуйте, Passerby, Вы писали:
P>Если содержимое строки десериализуется в список
Все таки уточните о чем речь? у вас простой список через запятую в виде строки и вы его парсите или что?
А вообще, проще всего оценить скорость работы алгоритма при помощи банального теста.
прогоните его на 10, 100 , 1000... и постройте кривую t(n) и посмотрите какой вариант лучше. по памяти можно тоже не на бумажке а тестом оценить, ну замерять конечно чуть сложнее, возможно есть либы.
нет смысла гадать.
Здравствуйте, varenikAA, Вы писали: AA>Все таки уточните о чем речь? у вас простой список через запятую в виде строки и вы его парсите или что?
Десериализация, о которой идет речь, это и есть парсинг строки.
Здравствуйте, Passerby, Вы писали:
P>Здравствуйте, Serginio1, Вы писали: S>> Нет IEnumerable это System.Collections.Generic.IEnumerator<out T> GetEnumerator () и главное в нем MoveNext() и Current P>А что нет? IEnumerable это интерфейс. А System.Collections.Generic.IEnumerator<out T> GetEnumerator () это реализация интерфейса. S>>Десериализуя список P>Десериализуется не список, а строка. Список это и есть коллекция, которая создается из строки при ее десериализации. Строка все равно должна десериализоваться в какую-нибудь коллекция, а потом уже к этой коллекции можно применять IEnumerable. К строке же IEnumerable не применить. S>>Ну System.ValueTuple это структура понятно, что она выгоднее P>Это если сначала не создается список, а из него делается кортеж. А не сразу кортеж.
Именно десериализуя список и десериализвав строку при вызове MoveNext и записывая в Current текущее значение у тебя в итоге никакого списка нет.
Нонял прошу прощения. Ты говоришь об объекте как списке полей?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали: S> Именно десериализуя список
Что такое десериализация списка? S>Нонял прошу прощения. Ты говоришь об объекте как списке полей?
Я говорю о десериализации. Десериализации строки. Бывают другие десериализации?
Здравствуйте, Passerby, Вы писали:
P>Здравствуйте, Serginio1, Вы писали: S>> Именно десериализуя список P>Что такое десериализация списка?
в xml и json есть списки и массивы и они специально оформляются.
Считывать и десериализовывать можно по одному элементу
S>>Нонял прошу прощения. Ты говоришь об объекте как списке полей? P>Я говорю о десериализации. Десериализации строки. Бывают другие десериализации?
Да бывают разные объекты. Содержащие миллионы записей итд.
Можно десериализовывать сразу, либо отложенно, часть хранить в памяти а часть на диске зная только позицию
Вариантов куча, в зависимости от алгоритма получения данных
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> в xml и json есть списки и массивы и они специально оформляются.
Приведи пример json не со строкой, а со списком. Или имеешь в виду объект JObject? Это самый медленный вариант, когда строка десериализуется в JObject, а потом в нем еще раз производится поиск нужных строк.
P>>Я говорю о десериализации. Десериализации строки. Бывают другие десериализации? S> Да бывают разные объекты. Содержащие миллионы записей итд. S> Можно десериализовывать сразу, либо отложенно, часть хранить в памяти а часть на диске зная только позицию S>Вариантов куча, в зависимости от алгоритма получения данных
Ничего не понял. С сервера приходят данные в виде строки, которая десериализуется. Как может сервер передать данные в виде объекта?
Сериализация это преобразование объекта в последовательность символов. Десериализация — это преобразование последовательности символов в объект. Но что такое десериализация объекта??
Здравствуйте, Passerby, Вы писали:
P>Здравствуйте, Serginio1, Вы писали:
S>> в xml и json есть списки и массивы и они специально оформляются. P>Приведи пример json не со строкой, а со списком. Или имеешь в виду объект JObject? Это самый медленный вариант, когда строка десериализуется в JObject, а потом в нем еще раз производится поиск нужных строк. https://developer.mozilla.org/ru/docs/Learn/JavaScript/Objects/JSON
members 'nj vfccbd
P>>>Я говорю о десериализации. Десериализации строки. Бывают другие десериализации? S>> Да бывают разные объекты. Содержащие миллионы записей итд. S>> Можно десериализовывать сразу, либо отложенно, часть хранить в памяти а часть на диске зная только позицию S>>Вариантов куча, в зависимости от алгоритма получения данных P>Ничего не понял. С сервера приходят данные в виде строки, которая десериализуется. Как может сервер передать данные в виде объекта? P>Сериализация это преобразование объекта в последовательность символов. Десериализация — это преобразование последовательности символов в объект. Но что такое десериализация объекта??
Необязательно это база данных. Это например обмен с другой базой в виде xml или json которые могут достигать десятки гигабайт
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали: P>>Приведи пример json не со строкой, а со списком. Или имеешь в виду объект JObject? Это самый медленный вариант, когда строка десериализуется в JObject, а потом в нем еще раз производится поиск нужных строк. S> https://developer.mozilla.org/ru/docs/Learn/JavaScript/Objects/JSON S>members 'nj vfccbd
По ссылке: "JSON — текстовый формат данных, следующий за синтаксисом объекта JavaScript, который был популяризирован Дугласом Крокфордом"
Приведи пример json не со строкой, а со списком.
P>>Сериализация это преобразование объекта в последовательность символов. Десериализация — это преобразование последовательности символов в объект. Но что такое десериализация объекта?? S>Необязательно это база данных. Это например обмен с другой базой в виде xml или json которые могут достигать десятки гигабайт
По ссылке "Преобразование строки в родной объект называется десериализацией (преобразование из последовательной формы в параллельную), в то время как преобразовании родного объекта в строку, таким образом ,чтобы он мог быть передан через сеть, называется сериализацией(преобразование в последовательную форму)."
Что такое десериализация объекта?
Здравствуйте, Passerby, Вы писали:
P>Здравствуйте, Serginio1, Вы писали: P>>>Приведи пример json не со строкой, а со списком. Или имеешь в виду объект JObject? Это самый медленный вариант, когда строка десериализуется в JObject, а потом в нем еще раз производится поиск нужных строк. S>> https://developer.mozilla.org/ru/docs/Learn/JavaScript/Objects/JSON S>>members 'nj vfccbd P>По ссылке: P>"JSON — текстовый формат данных, следующий за синтаксисом объекта JavaScript, который был популяризирован Дугласом Крокфордом" P>Приведи пример json не со строкой, а со списком.
members чем является?
P>>>Сериализация это преобразование объекта в последовательность символов. Десериализация — это преобразование последовательности символов в объект. Но что такое десериализация объекта?? S>>Необязательно это база данных. Это например обмен с другой базой в виде xml или json которые могут достигать десятки гигабайт P>По ссылке "Преобразование строки в родной объект называется десериализацией (преобразование из последовательной формы в параллельную), в то время как преобразовании родного объекта в строку, таким образом ,чтобы он мог быть передан через сеть, называется сериализацией(преобразование в последовательную форму)." P>Что такое десериализация объекта?
Не всегда. Еще раз пример массива. Ты можешь не десериализовать его полностью или через тот же IEnumerable считывая по одному элементу.
и солнце б утром не вставало, когда бы не было меня