Advertisement
Guest User

Untitled

a guest
Oct 8th, 2018
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4. #include <immintrin.h>
  5.  
  6. FILE *fp;
  7. unsigned int output_file_offset = 0;
  8. unsigned int input_file_offset = 0;
  9. char *buffer;
  10. uint64_t *out_buffer;
  11. unsigned int bytes_read = 0;
  12.  
  13. void copyAndFixBuffer() {
  14.     char* rawbuff = (char*)out_buffer;
  15.     int s,e;
  16.     for(s=0,e=0; s<output_file_offset*9;) {
  17.         if(s % 9) {
  18.             buffer[s]=rawbuff[e];
  19.             s++,
  20.             e++;
  21.         }
  22.         else {
  23.             buffer[s] = '\n';
  24.             s++;
  25.         }
  26.     }
  27.     buffer[s]='\n';
  28. }
  29.  
  30. void flushdata() {
  31.     copyAndFixBuffer();
  32.     fwrite(buffer, output_file_offset*9+1,1,stdout );
  33. }
  34.  
  35. int main ()
  36. {
  37.     fp = fopen("/mnt/c/programming/randomdata.bin", "r");
  38.     buffer = (char*) malloc(1010000000);
  39.     out_buffer = (uint64_t*)malloc(1010000000);
  40.    
  41.     while(bytes_read = fread(buffer, 1, 100000000, fp)) {
  42.         output_file_offset = 0;
  43.         input_file_offset = 0;
  44.         while(1) {
  45.             if(input_file_offset == bytes_read) break;
  46.             char c = buffer[input_file_offset];
  47.             input_file_offset++;
  48.             uint64_t out = __builtin_bswap64(_pdep_u64(c,0x0101010101010101)|0x3030303030303030);
  49.             out_buffer[output_file_offset] = out;
  50.             output_file_offset++;
  51.         }
  52.         flushdata();
  53.     }
  54.     return 0;
  55. }
  56.  
  57. //>inb4 muh RAM
  58. //it's faster this way
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement