Как я могу разместить свои функции в другом файле c, не теряя времени выполнения?
strcpy: 0.485000
strcpyFunc: 0.469000
strcpyFuncInAnotherC: 2.015000
Даже пробовал с inline, но, похоже, он никогда ничего не вставлял, потому что exe-файл сохраняет свой маленький размер,и время было одинаковое.
Я компилирую с mingw32-gcc под code :: block
Я изучаю C, большое спасибо за то, что помогли мне понять, как правильно обрабатывать проект со многими файлами .c...
Здесь стендовый код (обошлось без main.h)
main.c
#include <stdio.h>
#include <string.h>
#include <windows.h>//for GetTickCount
#include "func.h"
void double2str(const double x, char *buf) {
sprintf(buf, "%.6f", x);
}
double milliTick(void) {
return GetTickCount()/1000.0;
}
double timeDiff(const double start, const double end) {
return end-start;
}
void strcpyFunc(char *buf, const char *str) {
strcpy(buf, str);
}
int main() {
char buf64[24];
char buf[1024];
char bufBench[32];
char *sample = "abcdefghijklmnopqrstuvwxyz";
double timeStart1=0, timeEnd1=0;
double timeStart2=0, timeEnd2=0;
double timeStart3=0, timeEnd3=0;
size_t len = 99999999;
size_t i = 0;
timeStart1 = milliTick();
while(i < len) {
strcpy(bufBench, sample);
i++;
}
timeEnd1 = milliTick();
i = 0;
timeStart2 = milliTick();
while(i < len) {
strcpyFunc(bufBench, sample);
i++;
}
timeEnd2 = milliTick();
i = 0;
timeStart3 = milliTick();
while(i < len) {
strcpyFuncInAnotherC(bufBench, sample);
i++;
}
timeEnd3 = milliTick();
strcpy(buf, "");
double2str(timeDiff(timeStart1,timeEnd1), buf64);
strcat(buf, "strcpy:\t\t\t");
strcat(buf, buf64);
strcat(buf, "\n");
double2str(timeDiff(timeStart2,timeEnd2), buf64);
strcat(buf, "strcpyFunc:\t\t");
strcat(buf, buf64);
strcat(buf, "\n");
double2str(timeDiff(timeStart3,timeEnd3), buf64);
strcat(buf, "strcpyFuncInAnotherC:\t");
strcat(buf, buf64);
strcat(buf, "\n");
printf(buf);
return 0;
}
func.ч
#ifndef HEADER_FUNC_H
#define HEADER_FUNC_H
void strcpyFuncInAnotherC(char *buf, const char *str);
#endif
func.c
#include <stdio.h>
#include <string.h>
#include "func.h"
void strcpyFuncInAnotherC(char *buf, const char *str) {
strcpy(buf, str);
}