Я слышал эту фразу много. Что это значит?
Пример поможет.
Я слышал эту фразу много. Что это значит?
Пример поможет.
От Wiktionary:
Для случая 1 это, вероятно, похоже на
for (unsigned int i = 0; i < 0xffffffff; ++ i) {}
Я думаю, что эта фраза обычно используется для обозначения цикла, который повторяется много раз и который может серьезно повлиять на производительность программы, то есть он может использовать множество циклов процессора. Обычно вы будете слышать эту фразу в обсуждении оптимизации.
В качестве примера я думаю о играх, где цикл может понадобиться обрабатывать каждый пиксель на экране или научное приложение, где цикл обрабатывает записи в гигантских массивах точек данных.
Хороший пример жесткой петли (бесконечный цикл) в видео Джон Скит и Тони Пони.
Пример:
while(text.IndexOf(" ") != -1) text = text.Replace(" ", " ");
который создает замкнутый цикл, потому что IndexOf
игнорирует символ нулевой ширины Unicode (таким образом, находит два смежных пространства), но Replace
не игнорирует их (таким образом, не заменяя смежные пространства).
В других ответах уже есть хорошие определения, поэтому я не упоминаю их снова.
Контейнер с жестким циклом - это тот, который не похож на процессор. Это цикл, который вписывается в кеш команд, который не имеет ветвления и который эффективно скрывает задержку выборки данных для обрабатываемых данных.
Ответ SandeepJ является правильным в контексте сетевых устройств (например, см. запись в Википедии на промежуточном сервере), которые касаются пакетов. Я хотел бы добавить, что поток/задача, выполняющая узкий цикл, пытается оставаться запланированной на одном CPU и не отключать контекст.
Согласно словарю Вебстера, "цикл кода, который выполняется без освобождения каких-либо ресурсов для других программ или операционной системы".
http://www.websters-online-dictionary.org/ti/tight+loop.html
Из опыта я заметил, что если вы пытаетесь сделать цикл, который выполняется неопределенно долго, например, что-то вроде:
while(true)
{
//do some processing
}
Такая петля, скорее всего, всегда будет ресурсоемкой. Если вы проверите использование ЦП и памяти в этом процессе с помощью этого цикла, вы обнаружите, что он будет взлетел. Такова идея, которую некоторые люди называют "узкой петлей".