C# нагрузка на процессор

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Sharper, 30 Oct 2010.

  1. Sharper

    Sharper New Member

    Joined:
    10 Mar 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    У меня такая проблема - При выполнении моей программы нагрузка на процессор большая (в диспечере 50 цп хавает).

    PHP:
    while(true)
    {
       if(
    a==1)
       {
       }
    }
    Какие есть варианты?

    1. Thread.Sleep(100) - меньше нагрузка но выполнение очень долгое.
    2. Application.DoEvents() - воще не из этой оперы.

    Прошу вашей помощи! :confused:
     
  2. [х26]VОLАND

    [х26]VОLАND Elder - Старейшина

    Joined:
    7 Jun 2006
    Messages:
    513
    Likes Received:
    756
    Reputations:
    218
    Если дело доходит до написания такого кода, то нужно задуматься о правильности самого алгоритма..
     
    1 person likes this.
  3. SmsMachine

    SmsMachine New Member

    Joined:
    2 Jul 2010
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0

    А что этот код должен делать? Есть ли другие операторы внутри if?
    То, что вы привели, называется циклом бездействия. Он и должен загружать процессор по полной, т. к. просто крутится в цикле без задержек.
    Если вам надо просто подождать какое-то время - используйте sleep, если нужно что-то синхронизировать - семафоры. В любом случае, трудно что-то предложить, не зная назначения кода.
     
  4. Sharper

    Sharper New Member

    Joined:
    10 Mar 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    В моэй программе алгоритм написан нормально. Это я как пример написал.

    При написании выше указаного кода ЦП будет 100 . Вот вопрос как можно его уменьшить. Возможно приоритет потока уменьшить...
     
  5. [х26]VОLАND

    [х26]VОLАND Elder - Старейшина

    Joined:
    7 Jun 2006
    Messages:
    513
    Likes Received:
    756
    Reputations:
    218
    Как раз таки это находится под большим вопросом. Код в студию.
     
  6. Sharper

    Sharper New Member

    Joined:
    10 Mar 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    Воланд я те код свой не дам. Поверь там все написано нормально.

    Есть вопрос не по моему коду, а по данному коду .

    НУ ладно допустим у меня такой код


    PHP:
    int a=0,b=1;
    while(
    true)
    {

        ...
    // Тут переменная a и b меняется по каким-то причинам
        
    if(a==b)
        {

        }
    }
    Вот ЦП 100 и что ж делать :confused:
     
  7. UNAT

    UNAT New Member

    Joined:
    22 Aug 2009
    Messages:
    26
    Likes Received:
    2
    Reputations:
    2
    Дожили. При while(true) у тебя в любом случае загрузка процессора будет 100%, если ты внутри этого цикла не поставишь ожидание.
     
  8. Sharper

    Sharper New Member

    Joined:
    10 Mar 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    Может существуют варианты... без задержки...

    Может Wizard знает....
     
  9. UNAT

    UNAT New Member

    Joined:
    22 Aug 2009
    Messages:
    26
    Likes Received:
    2
    Reputations:
    2
    Что препятствует установке задержки, например, 1мс внутри цикла? Сразу снизит нагрузку до 0.
    P.S. Вродебы....
     
  10. Sharper

    Sharper New Member

    Joined:
    10 Mar 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    :D

    P.S я ставлю 100 мс и нагрузка только в 2 раза падает.
     
  11. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    ТС до тебя что недоходит что в таком цикле процессор в пустую молотить будет??
     
  12. crypt0n

    crypt0n Member

    Joined:
    20 Feb 2010
    Messages:
    40
    Likes Received:
    5
    Reputations:
    0
    я не знаю шарп, но это же бесконечный цикл?
     
  13. UNAT

    UNAT New Member

    Joined:
    22 Aug 2009
    Messages:
    26
    Likes Received:
    2
    Reputations:
    2
    Да, это - бесконечный цикл. Нагрузка на проц при sleep() идет из-за реализации оджидания, на Delphi решалось через waitforsingleobject. Тогда даже 1мс при бесконечном цикле снижала нагрузку до 0.
     
  14. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    обожэмой... :eek:
    автор неадекват, лечись.
    тебе объяснили несколько человек в чём причина, че тупишь?
    не индус случаем?
    топай сюда.
    мир, братюнь. ;)
     
  15. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Из-за того, что поток позволяет на некоторое время процессору переключить контекст. А ивенты, думаю, и в шарпе не отменяли.

    А бесконечный цикл вполне может иметь место, например, при зашифровывании большого количества данных или при поиске по тексту. Тогда нагрузка действительно будет большая.
     
  16. Sharper

    Sharper New Member

    Joined:
    10 Mar 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    Еба и какая разница . Я просто спросил как убрать нагрузку! И написал пример. Понятно что такого гамна у меня нету в проге. Это ПРОСТО ПРИМЕР.
    ЕСЛИ ПИШЕШ 1мс нагрузка не уменьшуется !

    Тут такая проблема что ивент не очень подойдет.
    Хотя ... если не трудно напиши код по моему примеру.

    Прям Пророк :D
     
  17. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    1.Пример адекватный давать нада!
    2.Тебе уже сказали как сделать.Синхронизировать обработку данных с появлением новых данных.Что бы камень не молотил лишнии циклы.
     
  18. Sharper

    Sharper New Member

    Joined:
    10 Mar 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    Отлично . Можно код.
     
  19. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Я не вижу особой проблемы при нагрузке на процессор при шифровании данных. Тот же WinRAR будет грузить проц во время запаковки файлов. Другое дело, если надо делать это незаметно, но C# в таком случае не совсем подойдет.
     
  20. Sharper

    Sharper New Member

    Joined:
    10 Mar 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    Та лан шарп норм . Если б не эта трабла...