WiscSort / wiscSort / Alpha / header / config.h
config.h
Raw
#define GIB(x) (x * 1024 * 1024 * 1024ull)
#define GB(x) (x * 1000 * 1000 * 1000ull)

#define KEY_SIZE 10
#define VALUE_SIZE 246 // 118 // 90
#define INDEX_SIZE 5
#define BLOCK_SIZE 4096              // 4000          // Need not be equal to physical block size
#define IDX_BLOCK_SIZE 3990          // REVIEW: 4095?? This is to that index records algin perfectly.
#define READ_BUFFER_SIZE GIB(10)     // GB(10)  // RUNs are equal to READ buffer size
#define M_READ_BUFFER_SIZE 629145600 // 2516582400 // GB(3)  // NOTE: If RUN size is smaller than limit just set buffer to sum of runs
#define WRITE_BUFFER_SIZE GIB(10)    // GB(10) // Used in merge phase
#define READ_SIZE 1                  // in BLOCK_SIZE
#define WRITE_SIZE 1
////////////////////////////////////////////////////////////////////

#define RECORD_SIZE (KEY_SIZE + VALUE_SIZE)
#define REC_PER_BLOCK (BLOCK_SIZE / RECORD_SIZE)
#define READ_BUFFER_COUNT (READ_BUFFER_SIZE / BLOCK_SIZE)
#define WRITE_BUFFER_COUNT (WRITE_BUFFER_SIZE / BLOCK_SIZE)
#define REC_PER_WRITE_BUFFER ((WRITE_BUFFER_COUNT * BLOCK_SIZE) / RECORD_SIZE) // Not required.
#define REC_PER_READ_BUFFER ((READ_BUFFER_COUNT * BLOCK_SIZE) / RECORD_SIZE)

//// Index
#define IDX_RECORD_SIZE (KEY_SIZE + INDEX_SIZE)
#define IDX_REC_PER_BLK (IDX_BLOCK_SIZE / IDX_RECORD_SIZE)