Python Runtime против C Runtime - PullRequest
       7

Python Runtime против C Runtime

0 голосов
/ 12 октября 2018

Итак, я написал Python и C-программу для сравнения времени выполнения, они оба записывают 10 ^ 7 байт в один и тот же файл.Я ожидал, что программа на C будет намного короче, но я ошибся.

Кстати, при запуске кода на C он чувствовал себя быстрее, чем код на python.Также извините за отсутствие комментариев, это был момент, и все довольно просто.

Ниже приведен результат и код для обоих, есть идеи, почему это происходит?

Результат:

The c program took 4.410720e+05s
The python program took 2.296329s

C Код:

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void program(){
    FILE *f;
    f = fopen("temp.txt", "w");

    for(unsigned int i = 1; i <= pow(10,7); i++){
        fprintf(f, "a");
    }

    fclose(f);
}

int main(void){
    clock_t begin = clock();

    program();

    clock_t end = clock();

    double time_spent = (double)(end - begin);

    FILE *f = fopen("runtime_log","a");
    fprintf(f, "The c program took ");
    fprintf(f, "%les\n",time_spent);

    fclose(f);
    return 0;
}

Код Python:

import time

def main():
    start = time.time()

    program()

    end = time.time()

    runtime = end - start

    f = open('runtime_log','a')
    f.write('The python program took %fs\n' %runtime)

def program():
    f = open('temp.txt','w')

    for i in range(10**7):
        f.write('a')

main()

1 Ответ

0 голосов
/ 12 октября 2018

Вместо этого:

fprintf(f, "%les\n",time_spent);

Попробуйте это:

fprintf(f, "%les\n",time_spent/CLOCKS_PER_SEC);

Причина, по которой ваш результат неверен, заключается в том, что вы предполагали, что это будут секунды, но на самом деле онинераскрытая единица времени, и вам нужно разделить на CLOCKS_PER_SEC, чтобы получить количество секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...