powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / List.Sort()
16 сообщений из 16, страница 1 из 1
List.Sort()
    #38310632
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сортировка такого списка занимает больше 1 секунды:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
                     var stringList = new List<NamedClass>
                     {
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 1"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 3"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 5"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 7"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 9"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 2"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 4"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 6"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 8"
                             },
                         new NamedClass
                             {
                                 Name = "Stopping Criterion 10"
                             },
                     };

                     stringList.Sort((a, b) => a.Name.CompareTo(b.Name));



Почему так?
Если после этого кода сортировать другие списки по Name - то уже намного быстрее (несколько мс)
Похоже что задержка есть только в самом первом вызове сортировки.
Чем это объяснить?
И самое главное, как это исправить?
...
Рейтинг: 0 / 0
List.Sort()
    #38310657
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причем это наблюдается на на любом компьютере
на компе с 4 Gb RAM, Win 7 x64 - этого нет
а на 2Gb RAM, Win XP - это есть
...
Рейтинг: 0 / 0
List.Sort()
    #38310663
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_.Сортировка такого списка занимает больше 1 секунды
Почему ты так решил?
...
Рейтинг: 0 / 0
List.Sort()
    #38310669
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ_andrews_.Сортировка такого списка занимает больше 1 секунды
Почему ты так решил?
Перед вызовом сортировки и после нее я пишу текущее время в лог файл
так я смотрю время выполнения метода.

Временем, за которое пишется лог фай конечно можно пренебречь.
...
Рейтинг: 0 / 0
List.Sort()
    #38310686
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_., а сортировка без анонимного делегата тоже тупит?
...
Рейтинг: 0 / 0
List.Sort()
    #38310690
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сокращенного делегата
...
Рейтинг: 0 / 0
List.Sort()
    #38310698
HiMik2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_andrews_.МСУпропущено...

Почему ты так решил?
Перед вызовом сортировки и после нее я пишу текущее время в лог файл
так я смотрю время выполнения метода.

Временем, за которое пишется лог фай конечно можно пренебречь.

Можно ли? А антивирус у Вас есть? А что если при первом обращении к файлу он его щупает?
...
Рейтинг: 0 / 0
List.Sort()
    #38310740
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_.,

не смотрите на времея записи в лог файл. Если нужно мерить время - используйте Stopwatch . Остальные времена от лукавого.
...
Рейтинг: 0 / 0
List.Sort()
    #38310750
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ_andrews_., а сортировка без анонимного делегата тоже тупит?
Код: c#
1.
stringList = stringList.OrderBy(a => a.Name).ToList();



этот код тоже больше секунды выполняется
...
Рейтинг: 0 / 0
List.Sort()
    #38310751
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HiMik2004_andrews_.пропущено...

Перед вызовом сортировки и после нее я пишу текущее время в лог файл
так я смотрю время выполнения метода.

Временем, за которое пишется лог фай конечно можно пренебречь.

Можно ли? А антивирус у Вас есть? А что если при первом обращении к файлу он его щупает?
антивирус есть
но это не первое обращение к лог файлу
до этого уже кучу всего туда было записано.
...
Рейтинг: 0 / 0
List.Sort()
    #38310757
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor_andrews_.,

не смотрите на времея записи в лог файл. Если нужно мерить время - используйте Stopwatch . Остальные времена от лукавого.
да. я согласен что мой метод не самый оптимальный. и дает возможно погрешности.
но для простых методов я думаю он вполне сойдет.
...
Рейтинг: 0 / 0
List.Sort()
    #38310759
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_.Временем, за которое пишется лог фай конечно можно пренебречь.
Я бы не стал в замер включать запись в лог. Ибо.

Померяй честную сортировку (и только её), а потом отпиши в лог результат. А потом продолжим.
...
Рейтинг: 0 / 0
List.Sort()
    #38311537
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ_andrews_.Временем, за которое пишется лог фай конечно можно пренебречь.
Я бы не стал в замер включать запись в лог. Ибо.

Померяй честную сортировку (и только её), а потом отпиши в лог результат. А потом продолжим.

вот оригинальный код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            foreach (var group in groupList)
            {
                var watch = new Stopwatch();
                watch.Start();

                group.Items.Sort((a, b) => a.Name.CompareTo(b.Name));

                watch.Stop();
                WriteLog("Sort ABC, Count = " + group.Items.Count + " = " + watch.ElapsedMilliseconds);                  
            }



Вот что получилось в лог файле:
Log FileSort ABC, Count = 11 = 1435
Sort ABC, Count = 2 = 0
Sort ABC, Count = 9 = 0
Sort ABC, Count = 10 = 0
Sort ABC, Count = 8 = 0
Sort ABC, Count = 10 = 0
...
Рейтинг: 0 / 0
List.Sort()
    #38311549
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замечу, что у класса Items есть еще OrderNr
так вот, если сортировать по int OrderNr - то такой задержки нет.

Но надо все же сортировать по алфавиту :-)
...
Рейтинг: 0 / 0
List.Sort()
    #38311582
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_., это жесть просто какая-то...

Слушай, вопрос в ребро - а попробуй отдельно от своего проекта написать тестовую консолину и прогнать свой код в ней?
...
Рейтинг: 0 / 0
List.Sort()
    #38311703
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, да, похоже и правда жесть.
Но уже с моей стороны

В тестовой консоли - все ок сортируется за 1 мс
Начала копать у себя - оказалось проблема в
Код: c#
1.
public string Name {get return ...}



Name берется из спец класса Localizer, для обеспечения перевода на другие языки.
В общем с Sort() похоже все ок. Буду копать этот Localizer.
Тему можно закрывать.

Спасибо.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / List.Sort()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]