Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
14.11.2019, 22:11
|
|||
---|---|---|---|
Action и производительность |
|||
#18+
В приложении добавил функционал подсчета затраченного времени на выполнение некоторый операций. Операции простые — сложение, вычитание, умножение, деление. Написал класс Watcher, в котором есть метод Run, который принимает Action и в этот методе ведет подсчет времени выполнения операции, как-то вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Обнаружил, что выполнение этих операций в методе Run выполняется дольше в несколько раз. Предположил, что это возможно операции с датами так тормозят в строчке: Код: c# 1.
Тормозят, но не на столько. При выполнении 344771728 операций результаты следующие: 1. Выполнение операций без подсчета: 00:40; 2. Выполнение в методе Run, но без подсчета интервала выполнения: 2:15; 3. Выполнение в методе Run с подсчетом интервала: 3:31; Получается что сжирает больше всего процессорного времени именно делегат. Разве это нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.11.2019, 10:30
|
|||
---|---|---|---|
Action и производительность |
|||
#18+
voodoos Разве это нормально? Да, делегат всегда вызывается медленней. И еще для такого подсчета лучше использовать класс StopWatch. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.11.2019, 11:59
|
|||
---|---|---|---|
|
|||
Action и производительность |
|||
#18+
fkthat, StopWatch можно обернуть в IDisposable, но не всегда удобно делегат это высокоуровневый объект, который имеет состояние, хранится в куче, ссылку на метод, и своё поведение по вызову одного, а может и нескольких указателей, конечно он будет работать медленнее. 344771728 это 137,908,691 вызовов в секунду. вполне достаточно. попробуйте такое количество тасков запустить еще больше огорчитесь ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.11.2019, 11:52
|
|||
---|---|---|---|
|
|||
Action и производительность |
|||
#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. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/moderation_log.php?user_name=%D0%B1%D0%B5%D1%81%D1%81%D0%BC%D1%8B%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B8_%D0%B1%D0%B5%D1%81%D0%BF%D0%BE%D1%89%D0%B0%D0%B4%D0%BD%D1%8B%D0%B9]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 452ms |
total: | 728ms |
0 / 0 |