Войти
ПрограммированиеФорумГрафика

Почему MSVS не использует на 100% процессор?

Страницы: 1 2 Следующая »
#0
23:45, 3 мая 2021

Короче, компилирую игру в Release с большим количеством объектов, которые рисую на экране через OpenGL/C++! А в итоге игра виснит, но процессор даже на половину не загружон! Как это понимать?
Это типа видокарта виснит или что...?
Короче как настроить MSVS 2019 что откомпилированая в нём программа использовала процессор на 100%...?


#1
0:17, 4 мая 2021

Цикл поймал? И выйти из него не можешь? )))

#2
(Правка: 2:32) 1:01, 4 мая 2021

werasaimon
Однопоточная программа обычно грузит только одно ядро процессора.
Ну а виснуть может из-за ожидания виндовых сообщений.

#3
2:02, 4 мая 2021

werasaimon
> Короче как настроить MSVS 2019

Прежде всего это не компилятор надо "настраивать", а твою программу написать правильно.

Баг там у тебя или боттлнек - на эти вопросы можно ответить только с отладочно/профилирующими средствами в руках.
Одно из самых базовых - печатать в левом верхнем углу fps.

#4
(Правка: 4:21) 4:20, 4 мая 2021

rcsim
> Одно из самых базовых - печатать в левом верхнем углу fps.
И дебаг и фпс все делал! фпс маленькое , а процессор только на 20% загружен !?

gamedevfor
> Однопоточная программа обычно грузит только одно ядро процессора.
> Ну а виснуть может из-за ожидания виндовых сообщений
Ну так я про один поток и говорю !

Mirrel
> Цикл поймал? И выйти из него не можешь? )))
В коде ошибок нет !

#5
6:31, 4 мая 2021

werasaimon
> В коде ошибок нет !

Да ладно.жпг

#6
18:25, 4 мая 2021

wait for vertical sync?

#7
19:09, 4 мая 2021

если игра виснит и процессор не загружон меняй железо, маленкое зверятко уже не тащит :D

#8
19:29, 4 мая 2021

sinoby, да нет, там обработка какая-то у него, вернее всего, идёт. А он грешит на железо.

werasaimon
> В коде ошибок нет !

поверил на слово, даже не глядя в код. )))
#9
23:58, 5 мая 2021

студия ещё как использует проц на все 100
когда компилит, даже мышка не шевелится

#10
6:15, 6 мая 2021

я морально не готов к следующей теме werasaimon'а по тому, как писать многопоточный рендерер на opengl.

#11
(Правка: 9:08) 9:06, 6 мая 2021
к следующей теме как писать многопоточный рендерер на opengl.

А по моему похвальная тема. Для трушных пацанов.
Можно будет загрузить CPU на 200% или 400%.
#12
10:36, 6 мая 2021

werasaimon

Многопоточный код сам себя не напишет, если что.

https://www.educative.io/blog/modern-multithreading-and-concurrency-in-cpp

#13
(Правка: 12:40) 12:39, 6 мая 2021

werasaimon
1) Если в программе есть Sleep(1) (в формах и WPF она автоматически присутствует в реализации цикла, а в консольном приложении самому нужно делать), то загрузка ядра в любом случае уже не будет 100%. Это признак правильной программы.
2) Загрузка процессора отображается относительно всех ядер. 25% 4 ядерного процессора значит, что у тебя программа грузит 100% одно ядро.
3) Программы не должны грузить ни ядро, ни тем более весь процессор на 100% - это признак багованной программы в которой нету Sleep(1). И которая мешает работе всей системы.
4) Если хочешь чтобы твоя программа делала как можно больше за один цикл, и использовала проц как можно больше, увеличивай количество действий в цикле, между вызовом Sleep(1), регулируя необходимый уровень сжирания процессорной мощности.
5) Если хочешь загрузить 4 ядерный процессор на 100%, тебе нужно в программе создать 4 потока, в которых не будет Sleep. Система повиснет. Скорее всего ты даже не сможешь запустить диспетчер задач чтобы закрыть программу, но это неточно.

#14
12:45, 6 мая 2021

gamedeveloper01
> 1) Если в программе есть Sleep(1), то загрузка ядра в любом случае уже не будет
> 100%. Это признак правильной программы.

он наверняка уже убежал, потому что нашёл свой недочёт...

А по поводу Sleep - в Windows это не есть хорошо! Sleep(1) спокойно превращается в Sleep(16) ? Иногда такая перспектива ни сколько не радует.

В нагруженной системе, не должно быть ни какого Sleep (если нам конкретно не задали, что надо ожидать), иначе этот Sleep выльется в дополнительную нагрузку, из которой программе сложнее с каждым циклом будет выбираться. Sleep нужен для не сильно нагруженных программ.

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика