|
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; Получается что сжирает больше всего процессорного времени именно делегат. Разве это нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 22:11 |
|
Action и производительность
|
|||
---|---|---|---|
#18+
voodoos Разве это нормально? Да, делегат всегда вызывается медленней. И еще для такого подсчета лучше использовать класс StopWatch. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2019, 10:30 |
|
Action и производительность
|
|||
---|---|---|---|
#18+
fkthat, StopWatch можно обернуть в IDisposable, но не всегда удобно делегат это высокоуровневый объект, который имеет состояние, хранится в куче, ссылку на метод, и своё поведение по вызову одного, а может и нескольких указателей, конечно он будет работать медленнее. 344771728 это 137,908,691 вызовов в секунду. вполне достаточно. попробуйте такое количество тасков запустить еще больше огорчитесь ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2019, 11:59 |
|
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2019, 11:52 |
|
|
start [/forum/topic.php?fid=18&fpage=11&tid=1354870]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 143ms |
0 / 0 |