readとfread 、writeとfwriteのファイル入出力を計測し、それぞれの性能の比較をしたいのですが、まるっきり実装方法がわからないです。
どうやって実行していけばいいのでしょうか。
ちなみに以下のコードをサンプルとして拡張させていくとのことでした。
C
#include <stdio.h> #include <unistd.h> #include <time.h> double get_current_timecount() { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return ts.tv_sec + ts.tv_nsec*1e-9; } int main( int argc, char* argv[] ) { double t1 = get_current_timecount(); // do something sleep(3); double t2 = get_current_timecount(); printf("%lf\n", t2-t1); return 0; }
fread/fwrite
#include "../exp1.h" int main(int argc, char** argv) { FILE* fpr; FILE* fpw; int ret; char buf[4]; if(argc != 2) { printf("usage: %s [filename]\n", argv[0]); exit(-1); } fpr = fopen(argv[1], "r"); fpw = fopen("tmp.txt", "w"); ret = fread(buf, sizeof(char), 4, fpr); while (ret > 0) { fwrite(buf, sizeof(char), ret, fpw); ret = fread(buf, sizeof(char), 4, fpr); } fclose(fpr); fclose(fpw); return 0; }
###試したこと
main.c
#include <stdio.h> #include <unistd.h> #include <time.h> #include "exp1.h" double get_current_timecount() { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return ts.tv_sec + ts.tv_nsec*1e-9; } int main( int argc, char* argv[] ) { FILE* fpr; FILE* fpw; int ret; char buf[4]; double t1 = get_current_timecount(); // 追加 if(argc != 2) { printf("usage: %s [filename]\n", argv[0]); exit(-1); } fpr = fopen(argv[1], "r"); fpw = fopen("tmp.txt", "w"); ret = fread(buf, sizeof(char), 4, fpr); while (ret > 0) { fwrite(buf, sizeof(char), ret, fpw); ret = fread(buf, sizeof(char), 4, fpr); } fclose(fpr); fclose(fpw); //ここまで double t2 = get_current_timecount(); printf("%lf\n", t2-t1); return 0; }
まだ回答がついていません
会員登録して回答してみよう