Created
July 24, 2015 19:22
-
-
Save brianv0/bbe1a7905d565da2c86f to your computer and use it in GitHub Desktop.
Write-Ahead log simulated benchmark
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "stdio.h" | |
#include "stdlib.h" | |
void initBuffer(char *buffer){ | |
if (buffer==NULL) exit (1); | |
for (int n=0; n<16000; n++){ | |
buffer[n]=rand()%26+'a'; | |
} | |
} | |
int main(){ | |
char *buffer; | |
int count = 0; | |
int previous = 0; | |
int bufStart = 0; | |
FILE *wFile; | |
int writeSize = 0; // size, in bytes, of each entry | |
long fileSize = 500000000; // total file size | |
long total = 0; // total bytes written (~fileSize) | |
int flushSize = 32000; // number bytes written before we force flush | |
wFile = fopen("myfile.log","w"); | |
buffer = (char*) malloc (16000); | |
initBuffer(buffer); | |
while (total < fileSize){ | |
writeSize = 1500 + rand() % 5500; | |
bufStart = rand() % 8000; | |
size_t written = fwrite(buffer+bufStart, sizeof(char), writeSize, wFile); | |
total += written; | |
count++; | |
if((total - previous) > flushSize){ | |
fwrite("\n", sizeof(char), 1, wFile); | |
fflush(wFile); | |
previous = total; | |
} | |
} | |
printf("Total number of entries forced to disk: %d\n", count); | |
fclose (wFile); | |
free(buffer); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
With Anti-Virus:
bvan@dhcp-visitor-220-197:scratch$ time ./a.out
Total number of entries forced to disk: 2353177
real 0m12.049s
user 0m1.287s
sys 0m10.714s
bvan@dhcp-visitor-220-197:scratch$ time ./a.out
Total number of entries forced to disk: 2353177
real 0m12.494s
user 0m1.282s
sys 0m11.104s
bvan@dhcp-visitor-220-197:scratch$ time ./a.out
Total number of entries forced to disk: 2353177
real 0m12.525s
user 0m1.340s
sys 0m11.077s