Мне довольно любопытно, как Windows и Linux управляют памятью с помощью программ на C ++.
Причина этого любопытства в том, что я только что сделал 3 очень простых программы на C ++, переносимых между Linux и Windows. Код был точно таким же. Аппаратное обеспечение тоже. Но результаты были невероятно разные! Оба теста были повторены 10 раз, а затем было рассчитано среднее арифметическое.
Я тестировал последовательные вставки в статический массив целых чисел, вектор класса и в стек (с указателями). Общее количество вставок составило 10 ^ 6.
Windows XP SP2 x86:
Статический массив целых чисел: 56 мс
Вектор класса: 686 мс
Стек (с указателями): 2193 мс
Slackware 11 x86 результаты:
Статический массив целых чисел: 100 мс
Вектор класса: 476 мс
Стек (с указателем): 505 мс
Разница в скорости между временем вставки стека в Windows и Slax впечатляет. Эти результаты кажутся нормальными? Оба кода были скомпилированы с использованием G ++ (mingw32-g ++ в Windows).
Используемый компьютер представлял собой двухъядерный процессор с тактовой частотой 3,2 ГГц и 4 ГБ ОЗУ, а при проведении испытаний было более 2 ГБ свободной ОЗУ.