Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- #include <immintrin.h>
- FILE *fp;
- unsigned int output_file_offset = 0;
- unsigned int input_file_offset = 0;
- char *buffer;
- uint64_t *out_buffer;
- unsigned int bytes_read = 0;
- void copyAndFixBuffer() {
- char* rawbuff = (char*)out_buffer;
- int s,e;
- for(s=0,e=0; s<output_file_offset*9;) {
- if(s % 9) {
- buffer[s]=rawbuff[e];
- s++,
- e++;
- }
- else {
- buffer[s] = '\n';
- s++;
- }
- }
- buffer[s]='\n';
- }
- void flushdata() {
- copyAndFixBuffer();
- fwrite(buffer, output_file_offset*9+1,1,stdout );
- }
- int main ()
- {
- fp = fopen("/mnt/c/programming/randomdata.bin", "r");
- buffer = (char*) malloc(1010000000);
- out_buffer = (uint64_t*)malloc(1010000000);
- while(bytes_read = fread(buffer, 1, 100000000, fp)) {
- output_file_offset = 0;
- input_file_offset = 0;
- while(1) {
- if(input_file_offset == bytes_read) break;
- char c = buffer[input_file_offset];
- input_file_offset++;
- uint64_t out = __builtin_bswap64(_pdep_u64(c,0x0101010101010101)|0x3030303030303030);
- out_buffer[output_file_offset] = out;
- output_file_offset++;
- }
- flushdata();
- }
- return 0;
- }
- //>inb4 muh RAM
- //it's faster this way
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement