|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей КИ так можно. Думаю, что здесь разные способы имеют право на жизнь. :-) OK Ищем Минимальный код для Больших таблиц чтобы не тормозило.Мне видится развитие концепции, предложенной ТС. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: 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. 49. 50. 51. 52. 53. 54. 55. 56. 57.
Код: 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.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 10:21 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КPetro123OK Ищем Минимальный код для Больших таблиц чтобы не тормозило.Мне видится развитие концепции, предложенной ТС. по моему - идеально. Ни убрать, ни добавить. И страшных слов invoke вроде бы нету). Спс. за один из методов решения сабжа. ЗЫ Обилие слов await (старт потока) тут явно из за БД сиквела и дров от этой БД (cmd.ExecuteReaderAsync). У меня в проекте PosgreSQL (нету XXXXAsync), поэтому вероятно будет 1 поток и одно слово await. 20809489 Ну, и интересен пример с EF. Это ведь прогрессивно). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 14:33 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Ну, и интересен пример с EF. Это ведь прогрессивно). Интересно, как EF справится с PG. Иначе прогрессивность сама себя вывернет наружу (хотя ей не привыкать). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 17:01 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныPetro123Ну, и интересен пример с EF. Это ведь прогрессивно). Интересно, как EF справится с PG. Иначе прогрессивность сама себя вывернет наружу (хотя ей не привыкать).Думаю, что справится. При первой возможности попробую набросать пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 17:37 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей Кпропущено... Мне видится развитие концепции, предложенной ТС. по моему - идеально. Ни убрать, ни добавить. И страшных слов invoke вроде бы нету). Спс. за один из методов решения сабжа. ЗЫ Обилие слов await (старт потока) тут явно из за БД сиквела и дров от этой БД (cmd.ExecuteReaderAsync). У меня в проекте PosgreSQL (нету XXXXAsync), поэтому вероятно будет 1 поток и одно слово await. 20809489 Ну, и интересен пример с EF. Это ведь прогрессивно).Продолжение, следующее за await, по дефолту выполняется через контекст синхронизации, в глубинах которого живёт Dispatcher.BeginInvoke (аналог PostMessage из winapi). Если контекст синхронизации отсутствует или отключен через .ConfigureAwait(false), то продолжение выполняется через пул потоков. Базовые СУБД-независимые классы DbCommand и т. п. имеют асинхронные методы, вроде как все современные провайдеры СУБД это так же должны поддерживать. Уточни версию .Net Framework, должен быть 4.5+. Ну и пример под EF сделаю при первой возможности, самому интересно стало. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 17:55 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КБазовые СУБД-независимые классы DbCommand и т. п. имеют асинхронные методы, тут такая штука: У меня в своём проекте есть асинхронность не для таблицы, а для добавления слоёв из базы в ГИС карту. И на строке Task.Run { } создаётся поток в цикле. Т.е. если поток создаётся, то нафига мне плодить ещё поток на коннект, на command и на реадер? Код: c# 1. 2. 3. 4. 5. 6.
Масло масляное или оверхед, я так понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 19:34 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныИнтересно, как EF справится с PG Если PG это Postgre, то ниже описал, что сейчас всё работает если брать непотоковый код к базе и запускать его в потоке. Не уточнял, потокозащищённый ли сам драйвер к базе. Пока все ошибки что есть ловятся выше драйвера. Например, общая коллекция Dictionary меняю на ConcurrentКоллекцию и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 19:41 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныPetro123Ну, и интересен пример с EF. Это ведь прогрессивно). Интересно, как EF справится с PG. Иначе прогрессивность сама себя вывернет наружу (хотя ей не привыкать).Сразу неправильно понял, что такое PG. :-) EF с PosgreSQL справляется нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 05:24 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123, версия с EF. Код: 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 05:43 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей КБазовые СУБД-независимые классы DbCommand и т. п. имеют асинхронные методы, тут такая штука: У меня в своём проекте есть асинхронность не для таблицы, а для добавления слоёв из базы в ГИС карту. И на строке Task.Run { } создаётся поток в цикле. Т.е. если поток создаётся, то нафига мне плодить ещё поток на коннект, на command и на реадер? Код: c# 1. 2. 3. 4. 5. 6.
Масло масляное или оверхед, я так понимаю.При таком использовании Task.Run начало и все продолжения, в том числе в вызываемых методах, выполняются через пул потоков, независимо от наличия контекста синхронизации. Иногда это бывает полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 05:57 |
|
|
start [/forum/topic.php?fid=21&gotonew=1&tid=1440497]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
152ms |
get topic data: |
14ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 224ms |
total: | 498ms |
0 / 0 |