2015-02-03 2 views
0

Я планирую написать программу, в которой я беру число и сравниваю его с математической теоремой, чтобы проверить, является ли она истиной или ложью, а затем добавить ее к номеру для проверки следующего числа. Предположим, что я делаю это в массивном цикле, где цикл заканчивается, если int == 100 000 000.C++ Endless Loop Bottleneck?

Есть ли какие-либо узкие места по умолчанию, которые будут в .exe после его компиляции, или это подтолкнет мой процессор к максимальной нагрузке, пока не завершит цикл?

Заранее спасибо.

+3

Этот вопрос полностью зависит от математической теоремы, которую вы пытаетесь доказать для каждого числа. Заботиться, чтобы поделиться? –

+1

Это всего лишь петля, больше ничего. На сегодняшних компьютерах 1 млн. Сделано в кратчайшие сроки. Узкое место может быть в коде для проверки вашей теоремы. –

+0

@TomasLycken: Это совсем не зависит от этого. Это зависит от того, как ОС выбирает запланировать процесс, связанный с процессором. –

ответ

1

Если вы не исчерпаете доступную оперативную память, которая приведет к замене и узкому месту ввода-вывода, ваша программа должна быть связана с ЦП.

Один процессорный ядро ​​будет почти на 100% занят, и если вы используете несколько потоков или процессов, вы можете поддерживать весь процессор почти на 100% занятым. Я говорю почти потому, что, скорее всего, вашей операционной системе придется немного поработать на крошечной части доступного времени.

+0

Спасибо за быстрый ответ, Питер. Я довольно новичок в программировании и просто пытаюсь научить себя; что было бы лучшим способом избежать максимизации ОЗУ? Я действительно не думал, что этот тип программы будет тяжелым для использования в памяти. – elgo2006

+0

Я упомянул ОЗУ на всякий случай. Некоторые математические алгоритмы используют огромные матрицы других больших массивов. –

+0

@ elgo2006: Принимая ваш пример (p!), Вы должны понимать, что это может быть большое число. Например. для p = 1000 вы будете искать число, которое составляет около 3000 цифр. Это колоссальные 10.000 бит, или 1,25 килобайта. ОК, возможно, это не так уж и много по сравнению с миллионами килобайт ОЗУ. – MSalters

1

До тех пор, пока вы не используете многопоточность, вам должно быть трудно подтолкнуть процессор к максимальной нагрузке. Больше циклов занимает больше времени, а не больше загрузки процессора.