mirror of
https://gitee.com/openharmony/third_party_littlefs
synced 2024-11-27 00:50:38 +00:00
96 lines
2.6 KiB
TOML
96 lines
2.6 KiB
TOML
|
[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;
|
||
|
'''
|