Почему код с несколькими вложенными циклами может завершиться немедленно в GCC, но может занять вечность в VS?

long long r = 0;
long long k = 0;
for (; k < 9999999999999; k++) 
{
    for (long long i = 0; i < 9999999999999; i++) 
    {
        for (long long j = 0; j < 9999999999999; j++) 
        {
            r = (r + (i * j) % 100) % 47;
            if (r != 0) 
            {
                r++;
            }
        }
    }
 }

Этот код выполняется на i3Core за 0,000001 секунды, проверено с помощью boost::timer::auto_cpu_timerна i7Core.

Но с Visual Studio 2010 кажется, что это бесконечное время.

Что не так с GCC или VS? GCC слишком много оптимизирует?

5
задан Ciro Santilli 新疆改造中心法轮功六四事件 26 June 2015 в 10:51
поделиться