Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
Как сделать сортировку что бы самому передавать параметры для сортировки например Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Но как мне самому задавать параметр сортировки, что бы сортировалось не только по regnumber а если нужно то по date и т д? Должно быть наподобие такого Код: c# 1. 2. 3. 4. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 15:54 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
VIT2708, используй Sort принимающий делегат Comparison<T> или IComparer<T>. В первом случае можно так написать: Код: c# 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 16:06 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
bazile, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 16:49 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ Enumerable.OrderBy родной List.Sort совершенно однозначно быстрее. На пару процессорных тиков? OrderBy универсальнее, можно в лямбде строить сложные lazy конструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 22:24 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУНа пару процессорных тиков? тактов. а это окала 30мс. в асинхронных задачах с конскими просадами на переключение контекста это ещё ой как сказывается. вообще, OrderBy не является сортировкой. это упорядочивание. можно надеяться на то, что трансляция дерева выражений приведёт нас к SQL-ому ORDER BY, или может даже к QSort, но гарантий вообще нет. никаких. в свою очередь List.Sort даёт прогнозируемую сложность сортировки. кто копался в рефлекторе, может обнаружить, что там не одна сортировка кроме qsort, выбирается самая оптимальная. от orderby ожидать такого не приходится. и да. конечно же. на маленьких коллекциях тыщей больше, тыщей меньше, особой разницы мы не увидем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:15 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVostt, ты чего несешь? Причем тут трансляция? Какие гарантии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:22 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУ, погугли слово "сортировка". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:28 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУ, For LINQ to Objects, it's a stable quicksort that is used. For any other kind of LINQ, it's left to the underlying implementation. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:30 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVostt, ты понимаешь, что такое трансляция? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:34 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУ, бенчмарки List(10).Sort(): 0,0025ms (100%) List(10).OrderBy(): 0,0157ms (628,00%) List(100).Sort(): 0,0068ms (100%) List(100).OrderBy(): 0,0294ms (432,35%) List(1000).Sort(): 0,0758ms (100%) List(1000).OrderBy(): 0,3107ms (409,89%) List(10000).Sort(): 0,8969ms (100%) List(10000).OrderBy(): 4,0751ms (454,35%) List(100000).Sort(): 10,8541ms (100%) List(100000).OrderBy(): 50,3497ms (463,88%) List(1000000).Sort(): 124,1001ms (100%) List(1000000).OrderBy(): 705,0707ms (568,15%) Код: 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. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:36 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУhVostt, ты понимаешь, что такое трансляция? :) не, это я просто так сказал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:36 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVosttМСУhVostt, ты понимаешь, что такое трансляция? :) не, это я просто так сказал Трансляция в ОРМ, дерево выражений LINQ транслируется в sql конструкции. А по поводу бенча завтра проверю. Нативный сорт быстрее, бесспорно, но вот с порядком вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:41 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУА по поводу бенча завтра проверю. сделай 2 теста. на NET 4.0 и 4.5. Отдельно. сильно удивишься )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:45 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
И кстати, проверь нативный сорт на делегате с Comparison. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:45 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVosttМСУА по поводу бенча завтра проверю. сделай 2 теста. на NET 4.0 и 4.5. Отдельно. сильно удивишься )) Ну говори уже. Я с мобилы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:46 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУТрансляция в ОРМ ну дык не обязательно. в случае LINQ to objects дерево транслируется непосредственно в исполняемый IL. отсюда существуют прекомпилируемые LINQ выражения, чтобы не разворачивать в рантайме дерево каждый раз. просто в оконцовке там не самая эффективная реализация qsort (при чем стабильная). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:47 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУНу говори уже. Я с мобилы :) реализация в 4.0 и 4.5 сортировке сильно отличается. в 4.5 существует некое подобие эвристики чтоли. выбирается наиболее удачный метод сортировки по каким-то своим критериям. т.е. там не всегда будет qsort. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 23:49 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVosttМСУТрансляция в ОРМ ну дык не обязательно. в случае LINQ to objects дерево транслируется непосредственно в исполняемый IL. отсюда существуют прекомпилируемые LINQ выражения, чтобы не разворачивать в рантайме дерево каждый раз. просто в оконцовке там не самая эффективная реализация qsort (при чем стабильная). Ну так можно сказать, что весь дотнет код транслируется в мсил :) Не фантазируй, короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 00:11 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVosttМСУНу говори уже. Я с мобилы :) реализация в 4.0 и 4.5 сортировке сильно отличается. в 4.5 существует некое подобие эвристики чтоли. выбирается наиболее удачный метод сортировки по каким-то своим критериям. т.е. там не всегда будет qsort. Погоняй на сложных сортировках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 00:11 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVostt, тестировал на 1 млн элементов: ... Код: c# 1. Код: c# 1. FW 4.5List(1000000).Sort(): 281,7841ms (100%) List(1000000).OrderBy(): 331,0803ms (117,49%) FW 4.0List(1000000).Sort(): 298,3634ms (100%) List(1000000).OrderBy(): 328,2193ms (110,01%) Как видишь вполне себе приемлемые показатели. А вот если сравнивать без (a, b) => a.CompareTo(b), а с простым методом Sort() без делегата, то Sort() рвёт в пух и прах: ...List(1000000).Sort(): 72,6328ms (100%) List(1000000).OrderBy(): 338,6388ms (466,23%) Итого: как я и говорил, разница в "паре процессорных тиках". Для простой сортировки, не требуещей Sort(Comparison<T> comparison), да - прирост производительности в 4 раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 09:20 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУ, ну так а ты передай в OrderBy делегат Comparsion, а то нечестно так сравнивать :) нативное сравнение для Int32 явно быстрее делегата, так как компилятор оптимизирует, оперируя с регистрами (без вызова методов, а это явно медленнее, так как делегаты не инлайнятся). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 09:29 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
МСУразница в "паре процессорных тиках" и всё-таки тактов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 09:36 |
|
||
|
Сортировка List<class>
|
|||
|---|---|---|---|
|
#18+
hVosttну так а ты передай в OrderBy делегат Comparsion, а то нечестно так сравнивать :) Не понял. А я что по-твоему делаю? :) Я ж говорю, с Comparsion практически идентично, без Comparsion Sort рвет в пух и прах. Но по сабжу нужен именно с Comparsion. Следовательно, OrderBy вполне приемлем. hVosttнативное сравнение для Int32 явно быстрее делегата, так как компилятор оптимизирует, оперируя с регистрами (без вызова методов, а это явно медленнее, так как делегаты не инлайнятся). О чем и речь. В OrderBy используется по сути тот же анонимный делегат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 09:39 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38472104&tid=1357929]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 415ms |

| 0 / 0 |
