testing read/write speed



 DEVELOP > c-Plus-Plus > testing read/write speed

LINK TO THIS PAGE  


rating :  0   |  0


  Page 1 of 1

1

 
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
.




  Page 1 of 1

1

 


Related Articles
 

NEWER

pg.1232     pg.940     pg.716     pg.544     pg.412     pg.311     pg.234     pg.175     pg.130     pg.96     pg.70     pg.50     pg.35     pg.24     pg.16     pg.10     pg.6     pg.3     pg.1

OLDER