Diskuze: Nekonecna smycka - Increase CPU Usage
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Hmm,.. Možná za to může scheduler Win 10. Těžko říci.. Obecně.. Tašky co nevyuziji celý prideleny čas (časové quantum) CPU se dostávají na radu víc často,.. (To je jedna ze strategii). Nevím ale jak konkrétně ve win se počítá využití CPU, mel jsem za to, ze na základě toho jak velké quantum proces dostává a kolik využije.
Oj, to je task.delay, ne thread sleep no tak to bude tvůj problém
hod větší kus kódu.. Nevím, jestli vis jak task.delay
funguje?
To nevím.
Task delay jsem pridal po rade zkusenejsich tady na foru. Protože bez něho bylo vytížení procesoru na vysokých číslech hned po spuštení.
Tady delší část kódu
public async void SeH(double StartPrice)
{
double Bid = (mainWindow.apiclient.SymbolInfoTick("GOLD")).Bid;
mainWindow.textbox.Text += Bid + "\r\n";
mainWindow.textbox.Text += StartPrice + "\r\n";
if (SellAllowed && Bid < StartPrice)
{
if (CheckSellStop())
{
Prvni(Bid);
Druha(Bid);
Treti(Bid);
Ctvrta(Bid);
Pata(Bid);
Sesta(Bid);
}
}
while (SellAllowed && Bid < StartPrice)
{
Bid = (mainWindow.apiclient.SymbolInfoTick("GOLD")).Bid;
CheckAny352();
await Task.Delay(1000);
GC.Collect();
}
}
O bože kdo ti poradil to
GC.Collect() v každé iteraci toho whileu?? To je pěkná sračka. V životě
nešahej na garbage collector, pokud nemáš nejmenší tušení jak
funguje.
Prvni co udělej, tak zapomen na dlouhou dobu, že existuje nějaký GC, už jen tímto silene tlacis na CPU...
zkus to spustit se sledováním CPU visual studio ti ukáže co žere nejvíc
času. Jak je vidět na obrázku zde:
https://blogs.msdn.microsoft.com/…ion-details/
Možná je chyba někde úplně jinde. Async a await sice vypadá jako
jednoduché řešení, ale pokud nevíš co se děje na pozadí může to být
zrádné.
Zkontroluj třeba jestli se ta funkce nevolá současně víckrát než si
myslíš.
To GC.Collect() bych tam nedával pokud k tomu nemáš vážný důvod ale na
funkci to nemá vliv.
Zobrazeno 8 zpráv z 8.