| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Производительность вызова get/set |
| Автор: SANCHO123 4.5.2012, 15:06 | ||||
| Добрый день! Есть класс:
Так вот вызовы Detail.get_W() и Detail.get_L() занимают около 40% времени выполнения функции (по данным анализа производительности VS 2010). Почему? Разве проверка условия такая тяжелая операция? В функции есть множество операций сортировки и создания больших массивов и они занимают меньше времени. Удалил get/set. Сделал так:
Функция стала выполняться в 5 раз быстрее, но потерял нужную функциональность. |
| Автор: infarch 7.5.2012, 11:48 |
| Немного не по теме, но... почему так: "if (Rotate == true)" , не проще ли "if (Rotate)" ? |
| Автор: Дрон 15.5.2012, 09:54 |
| Я не сильно в курсе как происходит анализ производительности в VS 2010, но есть предположение, что проблема может быть в нём. Грубо говоря, если метод или свойство очень простые, то время, затрачиваемое на замер производительности может оказаться даже больше, чем время выполнения полезного кода. Для доступа к переменным в то же время никаких замеров не происходит. Это распространённая проблема в профайлерах, поэтому такие простые методы обычно исключаются из анализа. Но я могу быть не прав. Вообще быстродействие было бы хорошо сравнить без профайлера и в режиме Release. Там тоже в 5 раз разница? |
| Автор: eugene123 23.5.2012, 14:48 | ||||
код
можно заменить
и сравнить а вообще, как заметил Дрон, в таких случаях лучше не использовать профайлер, а попробовать, например, обойтись классом Stopwatch |