1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Увеличить потребление ресурсов (C#)

Тема в разделе "Оффтопик", создана пользователем jwplaster, 30 июл 2015.

  1. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    В общем, сейчас запустил программку для подсчёта 2^1000000000000000000000000 и заметил такую вот странность: процессор не может нагружаться программой сильнее, чем на 25% :с Как можно увеличить потребление ресурсов, дабы ускорить программу?
     
  2. book777

    book777 Старожил Пользователь

    Баллы:
    123
  3. HoShiMin

    HoShiMin Старожил Пользователь

    Баллы:
    173
    Ссылки вообще не по теме.

    @jwplaster, твоя прога грузит проц на 25% (4 ядра?) из-за того, что расчёты ведутся в один поток. Поток одновременно может работать только на одном ядре, что он и делает. Система постоянно переключает контекст потока с ядра на ядро, из-за чего в диспетчере задач ты видишь равномерную нагрузку по всем ядрам. Поэтому независимо от сложности расчётов, один поток сможет загрузить процессор максимум на [100 / количество ядер] процентов.
    Хочешь написать грузилку процессора - создавай столько потоков, сколько ядер. И 2^100...000 - плохой выбор для грузилки. Во-первых, умножение (возведение в степень) - слишком простая операция, процессор ей не разогреешь, во-вторых, ты просто не сумеешь простыми способами посчитать число, превышающее 2^64 (не встроена же в C# либа для работы с большими числами?).
     
  4. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Да 4 ядра.
    И есть BigInteger (имеет неограниченное количество чисел.
    И я не хочу нагрузить, я хочу узнать результат :с
     
  5. HoShiMin

    HoShiMin Старожил Пользователь

    Баллы:
    173
    Надо же, мелкомягкие и до длинной арифметики добрались! Респект им. А по твоей теме - если хочешь узнать результат, то только так, на одном ядре, возведение в степень не распараллелишь.
     
  6. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    15 часов уже считает хд.
    А так, есть способ распараллелить: умножаем на 2 в 4 потока одно и тоже число 1000000 раз.
    Но сравнить продуктивность смогу лишь когда закончится подсчёт нынешнего :D
     
  7. Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    Лол, не постесняюсь спросить, а зачем тебе это число? :rolleyes:
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Убивалку компа пишет наверно.
     
  9. danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Спроси у гугла
     
  10. Автор темы
    jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    он не выдаёт точного :С
     
  11. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    ты в цикле просто 1000000000000000000000000 раз умножаешь число на 2?
     

Поделиться этой страницей