前提・実現したいこと
以下の006.cのソースコードを拡張させて、バッファサイズを変更した場合のread,writeとfread,fwriteの性能を比較したい。
発生している問題・エラーメッセージ
measure.cにおいて、CLOCK_MOTONICが定義されていないというエラーが出ているのはなぜでしょうか。
そもそもmeasureを使っての計測はどのようにしたら行えるのでしょうか。
エラーメッセージ
該当のソースコード
006.c
1#include "exp1.h" 2 3 4 5int main(int argc, char** argv) { 6 7 FILE* fpr; 8 9 FILE* fpw; 10 11 int ret; 12 13 char buf[4]; 14 15 16 17 if(argc != 2) { 18 19 printf("usage: %s [filename]\n", argv[0]); 20 21 exit(-1); 22 23 } 24 25 26 27 fpr = fopen(argv[1], "r"); 28 29 fpw = fopen("tmp.txt", "w"); 30 31 32 33 ret = fread(buf, sizeof(char), 4, fpr); 34 35 while (ret > 0) { 36 37 fwrite(buf, sizeof(char), ret, fpw); 38 39 ret = fread(buf, sizeof(char), 4, fpr); 40 41 } 42 43 fclose(fpr); 44 45 fclose(fpw); 46 47 48 49 return 0; 50 51} 52 53
Makefile
1CC=gcc 2 3C++=g++ 4 5LD=g++ 6 7CFLAGS=-c -Wall -pedantic-errors -O3 -std=c11 -I../ 8 9LDFLAGS= 10 11OBJECTS=006.o 12 13EXECUTABLE=006 14 15 16 17all: $(EXECUTABLE) 18 19 20 21$(EXECUTABLE): $(OBJECTS) 22 23 $(LD) $(LDFLAGS) $(OBJECTS) -o $@ 24 25 26 27.cpp.o: 28 29 $(C++) $(CFLAGS) $< -o $@ 30 31 32 33.c.o: 34 35 $(CC) $(CFLAGS) $< -o $@ 36 37 38 39clean: 40 41 -rm -f ${EXECUTABLE} *.o tmp.txt core 42 43 44 45
measure.c
1 #include <stdio.h> 2 3 #include <unistd.h> 4 5 #include <time.h> 6 7 8 9 double get_current_timecount() { 10 11 struct timespec ts; 12 13 clock_gettime(CLOCK_MONOTONIC, &ts,); 14 15 return ts.tv_sec + ts.tv_nsec*1e-9; 16 17 } 18 19 20 21 int main( int argc, char* argv[] ) { 22 23 double t1 = get_current_timecount(); 24 25 26 27 // do something 28 29 30 31 32 33 34 35 sleep(3); 36 37 38 39 double t2 = get_current_timecount(); 40 41 printf("%lf\n", t2-t1); 42 43 return 0; 44 45 }
exp1.h
1#include <stdio.h> 2 3#include <stdint.h> 4 5#include <string.h> 6 7#include <strings.h> 8 9#include <errno.h> 10 11#include <stdlib.h> 12 13#include <math.h> 14 15#include <unistd.h> 16 17#include <time.h> 18 19 #include <termios.h> 20 21#include <float.h> 22 23 24 25 #include <sys/socket.h> 26 27 #include <arpa/inet.h> 28 29#include <sys/ioctl.h> 30 31#include <netdb.h> 32 33 34 35#include <fcntl.h> 36 37#include <sys/stat.h> 38 39#include <sys/types.h> 40 41#include <dirent.h> 42 43#include <signal.h> 44 45#include <pthread.h> 46 47
回答3件
あなたの回答
tips
プレビュー