| Topic: |
DEVELOP > c-Plus-Plus |
| User: |
"Gernot Frisch" |
| Date: |
29 Aug 2006 04:13:06 AM |
| Object: |
testing read/write speed |
Hi,
I want to have a representative information about the read and write
speeds of a drive (cf-card, HDD and RAM-Disk).
I think the buffering of the filesystem must be fooled somehow for my
test program (sorry, uses GetTickCount() == Win32 for Milliseconds)
# # #
// E:\\Temp\\ (HardDisk) Write: 9761.29KB/s, Read: 371794.26KB/s
// R:\\ (RamDrive) Write: 144010.44KB/s, Read: 372827.02KB/s
#include <stdio.h>
#define FBUFSIZ (1024*1024*8) // 8Meg
#define LOOPS 16
#define TESTFILE "R:\\test.txt"
int main(int, char**)
{
char* buffer = new char[FBUFSIZ];
DWORD start, end1, end2;
// make sure memory is there
for(int i=0; i<FBUFSIZ; ++i)
buffer[i]=(char)i;
start = ::GetTickCount();
// Write test
for(int i=0; i<LOOPS; ++i)
{
FILE* pF = fopen(TESTFILE, "wb");
fwrite(buffer, FBUFSIZ, 1, pF);
fclose(pF);
}
end1 = ::GetTickCount();
// Read test
for(int i=0; i<LOOPS; ++i)
{
FILE* pF = fopen(TESTFILE, "rb");
fread(buffer, FBUFSIZ, 1, pF);
fclose(pF);
}
end2 = ::GetTickCount();
printf("Write: %.2fKB/s, Read: %.2fKB/s\n",
(double)FBUFSIZ*LOOPS/(end1-start),
(double)FBUFSIZ*LOOPS/(end2-end1));
buffer[0] = 1;
delete[] buffer;
}
# # #
--
-Gernot
int main(int argc, char** argv) {printf
("%silto%c%cf%cgl%ssic%ccom%c", "ma", 58, 'g', 64, "ba", 46, 10);}
.
|
|
| User: "Thomas J. Gritzan" |
|
| Title: Re: testing read/write speed |
29 Aug 2006 08:38:37 AM |
|
|
Gernot Frisch schrieb:
Hi,
I want to have a representative information about the read and write
speeds of a drive (cf-card, HDD and RAM-Disk).
I think the buffering of the filesystem must be fooled somehow for my
test program (sorry, uses GetTickCount() == Win32 for Milliseconds)
This is platform specific, you should ask in a windows platform group.
Since this is not your first posting here, you should definitly now that.
#include <stdio.h>
#define FBUFSIZ (1024*1024*8) // 8Meg
#define LOOPS 16
#define TESTFILE "R:\\test.txt"
int main(int, char**)
{
char* buffer = new char[FBUFSIZ];
DWORD start, end1, end2;
// make sure memory is there
for(int i=0; i<FBUFSIZ; ++i)
buffer[i]=(char)i;
start = ::GetTickCount();
[...]
delete[] buffer;
}
Why do you use new[] and delete[] in an otherwise plain C programm?
--
Thomas
.
|
|
|
| User: "Gernot Frisch" |
|
| Title: Re: testing read/write speed |
29 Aug 2006 09:40:00 AM |
|
|
I think the buffering of the filesystem must be fooled somehow for
my
test program (sorry, uses GetTickCount() == Win32 for Milliseconds)
This is platform specific, you should ask in a windows platform
group.
Since this is not your first posting here, you should definitly now
that.
I didn't know it was platform specific - sorry.
[...]
Why do you use new[] and delete[] in an otherwise plain C programm?
I use fopen/fread, since cin/cout are horribly slow on my compiler.
I use printf because I don't know how to printf("%.2f", 0.0) in C++.
All the rest *should* be C++.
.
|
|
|
|
|
| User: "Ian Collins" |
|
| Title: Re: testing read/write speed |
29 Aug 2006 04:29:05 PM |
|
|
Gernot Frisch wrote:
Hi,
I want to have a representative information about the read and write
speeds of a drive (cf-card, HDD and RAM-Disk).
I think the buffering of the filesystem must be fooled somehow for my
test program (sorry, uses GetTickCount() == Win32 for Milliseconds)
Have a look at the source for bonnie++ to see how this should be done.
--
Ian Collins.
.
|
|
|
| User: "Gernot Frisch" |
|
| Title: Re: testing read/write speed |
30 Aug 2006 04:29:45 AM |
|
|
Have a look at the source for bonnie++ to see how this should be
done.
thank you.
.
|
|
|
|
|
| User: "Victor Bazarov" |
|
| Title: Re: testing read/write speed |
29 Aug 2006 07:20:28 AM |
|
|
Gernot Frisch wrote:
I want to have a representative information about the read and write
speeds of a drive (cf-card, HDD and RAM-Disk).
I think the buffering of the filesystem must be fooled somehow for my
test program (sorry, uses GetTickCount() == Win32 for Milliseconds)
[...]
Thanks for sharing.
Are you seeking comments? I/O performance is platform-specific, and
has no relation to the language or the library. The Standard imposes
no requirements on I/O performance. That's my $0.02.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
.
|
|
|
| User: "Gernot Frisch" |
|
| Title: Re: testing read/write speed |
29 Aug 2006 08:09:20 AM |
|
|
"Victor Bazarov" <v.Abazarov@comAcast.net> schrieb im Newsbeitrag
news:ed1bee$ndh$1@news.datemas.de...
Gernot Frisch wrote:
I want to have a representative information about the read and
write
speeds of a drive (cf-card, HDD and RAM-Disk).
I think the buffering of the filesystem must be fooled somehow for
my
test program (sorry, uses GetTickCount() == Win32 for Milliseconds)
[...]
Thanks for sharing.
Are you seeking comments? I/O performance is platform-specific, and
has no relation to the language or the library. The Standard
imposes
no requirements on I/O performance. That's my $0.02.
The read speeds are always the same (300 MB/sec) which is in
indication that this is propably not from disk.
What might be an option to get true read speeds?
.
|
|
|
| User: "Victor Bazarov" |
|
| Title: Re: testing read/write speed |
29 Aug 2006 08:18:59 AM |
|
|
Gernot Frisch wrote:
[..]
The read speeds are always the same (300 MB/sec) which is in
indication that this is propably not from disk.
What might be an option to get true read speeds?
Ask in the newsgroup for your OS.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
.
|
|
|
|
|
|

|
Related Articles |
|
|