![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
constant |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 22.7.2011 Репутация: нет Всего: нет |
Выполняю задачу, требуется произвести вычисления, настолько быстро, насколько это позволяют ресурсы системы, пусть даже в ущерб всем остальным процессам.
При анализе производительности обратил внимание на следующую особенность. Как правило участки кода выполняются за более-менее одинаковое время, однако, периодически происходят непонятные мне задержки, достаточно длительные. Я попытался сделать упрощенную модель программы, чтобы показать, то, что я имею в виду. В программе итеративный процесс, на каждой итерации длинный внутренний цикл, имитирующий вычисления. Далее, на каждом цикле запоминаем время окончания вычисления. После этого находим продолжительность каждой итерации. Находим среднее время итерации. После чего ищем итерации, продолжительность которых более чем в три раза выше средней и выводим их. Если посмотреть на продолжительность итераций, то в большинстве случаев они практически одинаковые (порядка 70 мкс в моем случае).Но есть итерации,которые более чем в 8 раз больше среднего. Следует отметить также, что процессор во время выполнения программы загружается где-то процентов на 13%. Т.е. свободных ресурсов процессора - "выше крыши", процессор используется неэффективно, и программа может быть выполнена гораздо быстрее.Пробовал увеличивать приоритет процесса и потока до максимальных - эффекта практически нет. Вопросы: 1. Из-за чего происходят большие периодические задержки в выполнении программы, и как от них избавится ? 2. Почему процессорное время используется неэффективно, как задействовать все ресурсы процессора для выполнения программы ?
|
|||
|
||||
chupachups |
|
|||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 15.10.2008 Репутация: нет Всего: 1 |
1) Windows + .NET = никогда не позволят тебе загрузить процессор на 100%, в моем случае процессор загрузился только на 25%.
2) Никогда не определяй производительность запуская программу из студии, особенно с включенным параметром "Enable the Visual Studio hosting process". 3) Даже тестовый код оптимизируй по максимуму (5 запусков, ни одного превышения):
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
sgrey |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 15.4.2006 Репутация: нет Всего: 4 |
Такое поведение программы вплне ожидаемо. Очень трудно нагрузить процессор полностью вычислениями в одном потоке. А причин задержек может быть множество - может context switch происходит в этот момент, а может неудачно в линию кэша попала часть массива, а может ещё много чего и без самих вычислений нельзя сказать точно что происходит.
Код только из студии запускался? Так нельзя, нужно его отдельно запускать и измерять производительность. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |