Почему мой код на С++ медленнее, чем код на Python, который делает то же самое?Python

Программы на Python
Ответить
Anonymous
 Почему мой код на С++ медленнее, чем код на Python, который делает то же самое?

Сообщение Anonymous »

Я новичок в программировании. Я попытался создать 3 сценария на Python, C++ и Matlab, которые бы вычисляли напряжение на индукторе в цепи RL, используя матрицы и метод конечных разностей.
Когда я запустил эти коды, оказалось, что MatLab вычислил 0,4 секунды, Python На вычисление ушло 1 с, а на C++ — более 30 с.
Здесь я публикую код C++:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include "matplotlibcpp.h"
#include 

namespace plt = matplotlibcpp;

double R = 10.0;
double L = 2.0;
double V0 = 5.0;
double t1 = 1.0;
double t2 = 2.0;
double t_start = 0.0;
double t_end = 3.0;

double exact_voltage(double t) {
if (t < t1) {
return 0;
} else if (t1  0) {
A(i, i - 1) = -L / dt;
}
}

std::vector solve_times(N);
for (int i = 0; i < N; ++i) {
solve_times[i] = t_start + i * dt;
if (t1 = t2) {
B(i) = 0.0;
}
}

Eigen::VectorXd I = A.colPivHouseholderQr().solve(B);

Eigen::MatrixXd A_dI_dt = Eigen::MatrixXd::Zero(N, N);
for (int i = 0; i < N - 1; ++i) {
A_dI_dt(i, i) = -1.0 / dt;
A_dI_dt(i, i + 1) = 1.0 / dt;
}

Eigen::VectorXd dI_dt = A_dI_dt * I;

solved_V_L.resize(N);
solved_s_times.resize(N);

for (int i = 0; i < N; ++i) {
solved_V_L[i] = L * dI_dt[i];
solved_s_times[i] = solve_times[i] + dt;
}
}

int main() {

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79031088/why-my-c-code-is-slower-than-python-code-doing-same-thing[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»