MemFilesystem_test
Dependencies: SDFileSystem mbed
main.cpp@1:48383762a1ff, 2015-04-01 (annotated)
- Committer:
- mzta
- Date:
- Wed Apr 01 17:38:22 2015 +0000
- Revision:
- 1:48383762a1ff
- Parent:
- 0:f1015c4245f6
add speed comparison test.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mzta | 0:f1015c4245f6 | 1 | #include "mbed.h" |
mzta | 0:f1015c4245f6 | 2 | #include "MemFileSystem.h" |
mzta | 0:f1015c4245f6 | 3 | #include "SDFileSystem.h" |
mzta | 0:f1015c4245f6 | 4 | |
mzta | 0:f1015c4245f6 | 5 | SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd"); |
mzta | 1:48383762a1ff | 6 | Timer timer; |
mzta | 0:f1015c4245f6 | 7 | |
mzta | 0:f1015c4245f6 | 8 | const char *mem_file_path = "/ram/out.txt"; |
mzta | 1:48383762a1ff | 9 | const char *sd_file_path = "/sd/out.txt"; |
mzta | 1:48383762a1ff | 10 | const char *dump_path = "/sd/fatdump"; |
mzta | 1:48383762a1ff | 11 | const int DATA_SIZE = 100 * 1024; |
mzta | 1:48383762a1ff | 12 | uint8_t data_written[DATA_SIZE] = { 0 }; |
mzta | 1:48383762a1ff | 13 | |
mzta | 1:48383762a1ff | 14 | void writeFile(const char *path) |
mzta | 1:48383762a1ff | 15 | { |
mzta | 1:48383762a1ff | 16 | FILE *f = fopen(path, "w"); |
mzta | 1:48383762a1ff | 17 | for (int i = 0; i < DATA_SIZE; i++) { |
mzta | 1:48383762a1ff | 18 | data_written[i] = rand() % 0XFF; |
mzta | 1:48383762a1ff | 19 | fprintf(f, "%c", data_written[i]); |
mzta | 1:48383762a1ff | 20 | } |
mzta | 1:48383762a1ff | 21 | fclose(f); |
mzta | 1:48383762a1ff | 22 | } |
mzta | 1:48383762a1ff | 23 | |
mzta | 1:48383762a1ff | 24 | bool readFile(const char *path) |
mzta | 1:48383762a1ff | 25 | { |
mzta | 1:48383762a1ff | 26 | bool result = true; |
mzta | 1:48383762a1ff | 27 | |
mzta | 1:48383762a1ff | 28 | FILE *f = fopen(path, "r"); |
mzta | 1:48383762a1ff | 29 | for (int i = 0; i < DATA_SIZE; i++) { |
mzta | 1:48383762a1ff | 30 | uint8_t data = fgetc(f); |
mzta | 1:48383762a1ff | 31 | if (data != data_written[i]) { |
mzta | 1:48383762a1ff | 32 | result = false; |
mzta | 1:48383762a1ff | 33 | break; |
mzta | 1:48383762a1ff | 34 | } |
mzta | 1:48383762a1ff | 35 | } |
mzta | 1:48383762a1ff | 36 | fclose(f); |
mzta | 1:48383762a1ff | 37 | |
mzta | 1:48383762a1ff | 38 | return result; |
mzta | 0:f1015c4245f6 | 39 | } |
mzta | 0:f1015c4245f6 | 40 | |
mzta | 0:f1015c4245f6 | 41 | int main() |
mzta | 1:48383762a1ff | 42 | { |
mzta | 0:f1015c4245f6 | 43 | MemFileSystem *ramfs1 = new MemFileSystem("ram"); |
mzta | 0:f1015c4245f6 | 44 | ramfs1->format(); |
mzta | 1:48383762a1ff | 45 | |
mzta | 1:48383762a1ff | 46 | /** |
mzta | 1:48383762a1ff | 47 | * MemFileSystem read/write test |
mzta | 1:48383762a1ff | 48 | */ |
mzta | 0:f1015c4245f6 | 49 | { |
mzta | 0:f1015c4245f6 | 50 | printf("Mem: Writing ... "); |
mzta | 1:48383762a1ff | 51 | writeFile(mem_file_path); |
mzta | 0:f1015c4245f6 | 52 | printf("[OK]\r\n"); |
mzta | 0:f1015c4245f6 | 53 | |
mzta | 0:f1015c4245f6 | 54 | printf("Mem: Reading data ... "); |
mzta | 1:48383762a1ff | 55 | printf("[%s]\r\n", readFile(mem_file_path) ? "OK" : "FAIL"); |
mzta | 0:f1015c4245f6 | 56 | } |
mzta | 0:f1015c4245f6 | 57 | |
mzta | 1:48383762a1ff | 58 | /** |
mzta | 1:48383762a1ff | 59 | * MemFileSystem dump/load test |
mzta | 1:48383762a1ff | 60 | */ |
mzta | 0:f1015c4245f6 | 61 | { |
mzta | 0:f1015c4245f6 | 62 | printf("Dump from MemFs to SDFs ... "); |
mzta | 1:48383762a1ff | 63 | FILE *f = fopen(dump_path, "w"); |
mzta | 0:f1015c4245f6 | 64 | ramfs1->dump(f); |
mzta | 0:f1015c4245f6 | 65 | fclose(f); |
mzta | 1:48383762a1ff | 66 | printf("[OK]\n"); |
mzta | 0:f1015c4245f6 | 67 | } |
mzta | 0:f1015c4245f6 | 68 | |
mzta | 0:f1015c4245f6 | 69 | delete ramfs1; |
mzta | 0:f1015c4245f6 | 70 | MemFileSystem *ramfs2 = new MemFileSystem("ram"); |
mzta | 0:f1015c4245f6 | 71 | |
mzta | 0:f1015c4245f6 | 72 | { |
mzta | 0:f1015c4245f6 | 73 | printf("Load from SDFs to MemFs ... "); |
mzta | 1:48383762a1ff | 74 | FILE *f = fopen(dump_path, "r"); |
mzta | 0:f1015c4245f6 | 75 | ramfs2->load(f); |
mzta | 0:f1015c4245f6 | 76 | fclose(f); |
mzta | 1:48383762a1ff | 77 | printf("[OK]\n"); |
mzta | 0:f1015c4245f6 | 78 | } |
mzta | 0:f1015c4245f6 | 79 | |
mzta | 1:48383762a1ff | 80 | printf("Mem: Reading data ... "); |
mzta | 1:48383762a1ff | 81 | printf("[%s]\n", readFile(mem_file_path) ? "OK" : "FAIL"); |
mzta | 1:48383762a1ff | 82 | |
mzta | 1:48383762a1ff | 83 | /* |
mzta | 1:48383762a1ff | 84 | * FileSytem speed comparison |
mzta | 1:48383762a1ff | 85 | */ |
mzta | 0:f1015c4245f6 | 86 | { |
mzta | 1:48383762a1ff | 87 | int cnt = 10; |
mzta | 1:48383762a1ff | 88 | int s, e; |
mzta | 1:48383762a1ff | 89 | |
mzta | 1:48383762a1ff | 90 | timer.start(); |
mzta | 1:48383762a1ff | 91 | |
mzta | 1:48383762a1ff | 92 | s = timer.read_us(); |
mzta | 1:48383762a1ff | 93 | printf("Mem: Writing 10 times ..."); |
mzta | 1:48383762a1ff | 94 | for (int i = 0; i < cnt; i++) { |
mzta | 1:48383762a1ff | 95 | writeFile(mem_file_path); |
mzta | 0:f1015c4245f6 | 96 | } |
mzta | 1:48383762a1ff | 97 | e = timer.read_us(); |
mzta | 1:48383762a1ff | 98 | printf("[OK] avg = %dusec\n", (e - s) / cnt ); |
mzta | 1:48383762a1ff | 99 | |
mzta | 1:48383762a1ff | 100 | s = timer.read_us(); |
mzta | 1:48383762a1ff | 101 | printf("SD: Writing 10 times ..."); |
mzta | 1:48383762a1ff | 102 | for (int i = 0; i < cnt; i++) { |
mzta | 1:48383762a1ff | 103 | writeFile(sd_file_path); |
mzta | 1:48383762a1ff | 104 | } |
mzta | 1:48383762a1ff | 105 | e = timer.read_us(); |
mzta | 1:48383762a1ff | 106 | printf("[OK] avg = %dusec\n", (e - s) / cnt ); |
mzta | 1:48383762a1ff | 107 | |
mzta | 1:48383762a1ff | 108 | timer.stop(); |
mzta | 0:f1015c4245f6 | 109 | } |
mzta | 0:f1015c4245f6 | 110 | } |