|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
Здравствуйте. У меня такая задача. на сервере отправить разом 100 запросов и рассчитать среднее время ответа. Пробую так Код: 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.
но понимаю что это не верно. так как у меня время elapsed_time все время увеличивается ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2015, 22:41 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
IPmen, Создать массив на 100 ManualResetEvent (или Auto, как хотите), каждый эвент передаете в вебклиент, в ДанлоадСтрингКомплитед устанавливаете для переданного эвента сигнал. Стопвач нужно вынести из цикла. Перед тем, как вызвать стоп на стопвотче, делаем WaitAll на все 100 эвентов. берем элапседтайм и делим на 100, получаем среднее время ЗЫ IPman :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2015, 01:03 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
ЕМНИП у Рихтера что-то было на эту тему. Есть какое-то исскуственное ограничение на кол-во одновременных запросов к одному серверу. Вроде всего 2 по дефолту. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2015, 11:04 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
Согласен с Dima T. Нужно добавить в app.config: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2015, 18:45 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
Arm79 Стопвач нужно вынести из цикла. Перед тем, как вызвать стоп на стопвотче, делаем WaitAll на все 100 эвентов. Ага, ага! Он может максимум 64 ждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2015, 11:46 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2015, 12:06 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Я сам не проверял, если честно, не было никогда такой необходимости ))) Сейчас перепроверил, да, действительно, не более 64. Но это легко же обходится. Один эвент и ждем его, + заводим переменную = 99, которой в ДанлоадСтрингКомплитед через Interlocked уменьшаем на 1 и если стало 0, то устанавливаем эвент ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2015, 12:36 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
Arm79, Зачем мучаться? Task.WaitAll не имеет таких ограничений. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2015, 13:00 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
IPmen, у Вас классический пример эффекта замыкания в C# В C# 5.0 для foreach эту фичу немного изменили (в цикле for она все еще присутствует) Поэтому видоизмените ваш код Код: c# 1.
на Код: c# 1.
и почувствуйте разницу ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2015, 14:20 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
Всем спасибо а что если сделать через Prallel For Код: 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.
В таком виде заметил интересную вещь. точнее Console.WriteLine("Request " + i); выдаёте нумерацию по очереди 1,2,3,4,5,6 и т.д разве код е должен внутри Код: c# 1. 2.
не должен выполнится асинхронно? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2015, 14:56 |
|
Получить данные с потоков
|
|||
---|---|---|---|
#18+
IPmenВсем спасибо а что если сделать через Prallel For Код: 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.
В таком виде заметил интересную вещь. точнее Console.WriteLine("Request " + i); выдаёте нумерацию по очереди 1,2,3,4,5,6 и т.д разве код е должен внутри Код: c# 1. 2.
не должен выполнится асинхронно? Прошу прощения не так написал. у меня код Parallel.For( вызывается несколько раз в цикле, Код: c# 1. 2. 3. 4.
и строка Console.WriteLine("Request" + i); выдаёте нумерацию по очереди 1,2,3,4,5,6 и т.д до 10. разве так должно быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2015, 15:01 |
|
|
start [/forum/topic.php?fid=20&msg=39123908&tid=1400989]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 329ms |
total: | 466ms |
0 / 0 |