fs/fs.c: do_fsload: measure throughput

This patch adds time measurement and throughput calculation for
all supported load commands.

The output of ext2load changes from

---8<---
1830666 bytes read
--->8---

to

---8<---
1830666 bytes read in 237 ms (7.4 MiB/s)
--->8---

Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
[agust: rebased and revised commit log]
Signed-off-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
Andreas Bießmann 2012-11-14 13:32:37 +01:00 committed by Anatolij Gustschin
parent 624c721f0c
commit da1fd96ce4
1 changed files with 10 additions and 1 deletions

11
fs/fs.c
View File

@ -257,6 +257,7 @@ int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
unsigned long pos;
int len_read;
char buf[12];
unsigned long time;
if (argc < 2)
return CMD_RET_USAGE;
@ -293,11 +294,19 @@ int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
else
pos = 0;
time = get_timer(0);
len_read = fs_read(filename, addr, pos, bytes);
time = get_timer(time);
if (len_read <= 0)
return 1;
printf("%d bytes read\n", len_read);
printf("%d bytes read in %lu ms", len_read, time);
if (time > 0) {
puts(" (");
print_size(len_read / time * 1000, "/s");
puts(")");
}
puts("\n");
sprintf(buf, "0x%x", len_read);
setenv("filesize", buf);