Компиляторы стали настолько умные (часть 2) ???
От: octopuses  
Дата: 22.05.16 22:05
Оценка:
Решил переписать пример из предыдущего топика дабы исключить printf ( ради чистоты эксперимента ). Вот что получилось —


#include <iostream>

extern int a = 567;

int main()
{    
    while(true)
    {        
        a = a* rand() % 9999;
    }    

    return 0;
}

PS. Уж не знаю насколько корректно так загружать проц — если кто получше предложит будет здорово.

Вот результат запуска на 2-ядерной машине ( отчетливо видно что загрузка обеих ядер резко возросла когда приложение было запущено ) — см. график ниже.
Вопрос — при чем здесь второе ядро вообще? откуда берется его загрузка?
Ведь приложение однопоточное...Неужели Windows Scheduler так часто переключает контексты и каждый раз выделяет этому приложению кванты на разных ядрах ?
НО ЗАЧЕМ ? Ведь кроме этого приложения проц почти никто не жрет в системе ( на графике видно что до запуска утилизация обеих ядер была всего несколько процентов )

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.