| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- [cases.bench_file_read]
- # 0 = in-order
- # 1 = reversed-order
- # 2 = random-order
- defines.ORDER = [0, 1, 2]
- defines.SIZE = '128*1024'
- defines.CHUNK_SIZE = 64
- code = '''
- lfs_t lfs;
- lfs_format(&lfs, cfg) => 0;
- lfs_mount(&lfs, cfg) => 0;
- lfs_size_t chunks = (SIZE+CHUNK_SIZE-1)/CHUNK_SIZE;
- // first write the file
- lfs_file_t file;
- uint8_t buffer[CHUNK_SIZE];
- lfs_file_open(&lfs, &file, "file",
- LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => 0;
- for (lfs_size_t i = 0; i < chunks; i++) {
- uint32_t chunk_prng = i;
- for (lfs_size_t j = 0; j < CHUNK_SIZE; j++) {
- buffer[j] = BENCH_PRNG(&chunk_prng);
- }
- lfs_file_write(&lfs, &file, buffer, CHUNK_SIZE) => CHUNK_SIZE;
- }
- lfs_file_write(&lfs, &file, buffer, CHUNK_SIZE) => CHUNK_SIZE;
- lfs_file_close(&lfs, &file) => 0;
- // then read the file
- BENCH_START();
- lfs_file_open(&lfs, &file, "file", LFS_O_RDONLY) => 0;
- uint32_t prng = 42;
- for (lfs_size_t i = 0; i < chunks; i++) {
- lfs_off_t i_
- = (ORDER == 0) ? i
- : (ORDER == 1) ? (chunks-1-i)
- : BENCH_PRNG(&prng) % chunks;
- lfs_file_seek(&lfs, &file, i_*CHUNK_SIZE, LFS_SEEK_SET)
- => i_*CHUNK_SIZE;
- lfs_file_read(&lfs, &file, buffer, CHUNK_SIZE) => CHUNK_SIZE;
- uint32_t chunk_prng = i_;
- for (lfs_size_t j = 0; j < CHUNK_SIZE; j++) {
- assert(buffer[j] == BENCH_PRNG(&chunk_prng));
- }
- }
- lfs_file_close(&lfs, &file) => 0;
- BENCH_STOP();
- lfs_unmount(&lfs) => 0;
- '''
- [cases.bench_file_write]
- # 0 = in-order
- # 1 = reversed-order
- # 2 = random-order
- defines.ORDER = [0, 1, 2]
- defines.SIZE = '128*1024'
- defines.CHUNK_SIZE = 64
- code = '''
- lfs_t lfs;
- lfs_format(&lfs, cfg) => 0;
- lfs_mount(&lfs, cfg) => 0;
- lfs_size_t chunks = (SIZE+CHUNK_SIZE-1)/CHUNK_SIZE;
- BENCH_START();
- lfs_file_t file;
- lfs_file_open(&lfs, &file, "file",
- LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => 0;
- uint8_t buffer[CHUNK_SIZE];
- uint32_t prng = 42;
- for (lfs_size_t i = 0; i < chunks; i++) {
- lfs_off_t i_
- = (ORDER == 0) ? i
- : (ORDER == 1) ? (chunks-1-i)
- : BENCH_PRNG(&prng) % chunks;
- uint32_t chunk_prng = i_;
- for (lfs_size_t j = 0; j < CHUNK_SIZE; j++) {
- buffer[j] = BENCH_PRNG(&chunk_prng);
- }
- lfs_file_seek(&lfs, &file, i_*CHUNK_SIZE, LFS_SEEK_SET)
- => i_*CHUNK_SIZE;
- lfs_file_write(&lfs, &file, buffer, CHUNK_SIZE) => CHUNK_SIZE;
- }
- lfs_file_close(&lfs, &file) => 0;
- BENCH_STOP();
- lfs_unmount(&lfs) => 0;
- '''
|