|
CHARACTER INPUT #によるバイナリー読み込みが少し遅いようなので
テストしてみました
USB3.0 外付けHDD上のmp3ファイルでテストしました
※但し、これらのテスト結果はドライブやファイルによりかなりバラつきがあります
OPTION ARITHMETIC NATIVE
OPTION CHARACTER BYTE
FILE GETNAME N$
IF N$="" THEN STOP
OPEN #1:NAME N$
ASK #1: FILESIZE L
PRINT "FILE SIZE=";L;"Byte"
LET S$=REPEAT$(CHR$(0),L)
LET T=TIME
FOR I=1 TO L
CHARACTER INPUT #1: S$(I:I)
NEXT I
LET K=TIME-T
PRINT K;"second"
PRINT L/K/1024;"KByte/s"
CLOSE #1
END
実行結果
FILE SIZE= 4784092 Byte
59.9100000000035 second
77.9830553121303 KByte/s
OPTION ARITHMETIC NATIVE
OPTION CHARACTER BYTE
LET SEEK=0
FILE GETNAME F$
IF F$="" THEN STOP
OPEN #1:NAME F$
ASK #1: FILESIZE SIZE
CLOSE #1
PRINT "FILE SIZE=";SIZE;"Byte"
LET GETDATA$=REPEAT$(CHR$(0),SIZE+1)
LET T=TIME
LET K=GETBINARY(F$,SEEK,SIZE,GETDATA$)
LET L=TIME-T
PRINT L;"second"
IF K=0 THEN
IF L>0 THEN PRINT SIZE/L/1024/1024;"MByte/s"
!' FOR I=1 TO SIZE
!' PRINT RIGHT$("0"+BSTR$(ORD(GETDATA$(I:I)),16),2);" ";
!' IF MOD(I,16)=0 THEN PRINT
!' IF MOD(I,256)=0 THEN PRINT
!' NEXT I
ELSE
PRINT "READ ERROR!"
END IF
END
EXTERNAL FUNCTION GETBINARY(NAME$,SEEK,SIZE,DA$)
ASSIGN ".\DLL\fileread.dll","fileread"
END FUNCTION
-----------------------------------------------------------------------------------------
fileread.c
#include <stdio.h>
__declspec(dllexport) int fileread(char *name,int offset,int size,char *data)
{
FILE *fp;
if ((fp = fopen(name, "rb")) == NULL) {
return 1;
}
fseek(fp,offset,SEEK_SET);
fread(data,size,1,fp);
fclose(fp);
return 0;
}
実行結果
FILE SIZE= 4784092 Byte
1.000000000931322575E-2 second
456.2465663475481961 MByte/s
|
|