Я использую Windows7 с использованием CPython для python3.22 и g ++ exGG MinGW для C++ (это означает, что я использую libstdC++ в качестве библиотеки времени исполнения). Я написал две простые программы, чтобы сравнить их скорость.Python быстрее, чем C++? Как это произошло?
Python:
x=0
while x!=1000000:
x+=1
print(x)
C++:
#include <iostream>
int main()
{
int x = 0;
while (x != 1000000)
{
x++;
std::cout << x << std::endl;
}
return 0;
}
Оба не оптимизированы.
Сначала я запускал C++, затем я запускал python через интерактивную командную строку, которая намного медленнее, чем непосредственно запуск .py-файла.
Однако python опередил C++ и оказался более чем в два раза быстрее. Python занял 53 секунды, C++ занял 1 минуту и 54 секунды.
Это потому, что у python есть некоторая специальная оптимизация, выполняемая интерпретатору, или это потому, что C++ должен ссылаться на std и std, что замедляет его и заставляет его заняться RAM?
Или это какая-то другая причина?
Edit: Я попробовал еще раз, с \n
вместо std::endl
и компиляции с -O3
флагом, на этот раз потребовалось 1 мин, чтобы достигнуть 500.000.
Итак, согласно вашему тесту, бесконечный цикл в Python выполняется в два раза быстрее, чем печать одного числа на C++? Это действительно странно. –
Ах, эти образцы кода делают совершенно разные вещи ... Первый не заканчивается. –
Вчерашнее сообщение было опубликовано ... Это домашнее задание из класса или что-то в этом роде? Короткий ответ, буферы C++ на stdout по умолчанию. Python этого не делает. – Swiss