Skip to content

Commit

Permalink
Inflate: put "bits" in LSB of "code" struct on little-endian (~3.5% s…
Browse files Browse the repository at this point in the history
…peedup)
  • Loading branch information
dougallj committed Aug 19, 2022
1 parent 80590ad commit eb3000f
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 84 deletions.
160 changes: 80 additions & 80 deletions inffixed.h
Expand Up @@ -8,87 +8,87 @@
*/

static const code lenfix[512] = {
{96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48},
{0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128},
{0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59},
{0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176},
{0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20},
{21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100},
{0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8},
{0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216},
{18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76},
{0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114},
{0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},
{0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148},
{20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42},
{0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86},
{0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15},
{0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236},
{16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62},
{0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142},
{0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31},
{0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162},
{0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25},
{0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105},
{0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4},
{0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202},
{17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69},
{0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125},
{0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13},
{0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195},
{19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35},
{0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91},
{0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19},
{0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246},
{16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55},
{0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135},
{0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99},
{0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190},
{0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16},
{20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96},
{0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6},
{0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209},
{17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},
{0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116},
{0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4},
{0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153},
{20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44},
{0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82},
{0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11},
{0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229},
{16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58},
{0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138},
{0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51},
{0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173},
{0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30},
{0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110},
{0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0},
{0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195},
{16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65},
{0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121},
{0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},
{0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258},
{19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37},
{0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93},
{0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23},
{0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251},
{16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51},
{0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131},
{0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67},
{0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183},
{0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23},
{64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103},
{0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9},
{0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223},
{18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79},
{0,9,255}
{7,96,0},{8,0,80},{8,0,16},{8,20,115},{7,18,31},{8,0,112},{8,0,48},
{9,0,192},{7,16,10},{8,0,96},{8,0,32},{9,0,160},{8,0,0},{8,0,128},
{8,0,64},{9,0,224},{7,16,6},{8,0,88},{8,0,24},{9,0,144},{7,19,59},
{8,0,120},{8,0,56},{9,0,208},{7,17,17},{8,0,104},{8,0,40},{9,0,176},
{8,0,8},{8,0,136},{8,0,72},{9,0,240},{7,16,4},{8,0,84},{8,0,20},
{8,21,227},{7,19,43},{8,0,116},{8,0,52},{9,0,200},{7,17,13},{8,0,100},
{8,0,36},{9,0,168},{8,0,4},{8,0,132},{8,0,68},{9,0,232},{7,16,8},
{8,0,92},{8,0,28},{9,0,152},{7,20,83},{8,0,124},{8,0,60},{9,0,216},
{7,18,23},{8,0,108},{8,0,44},{9,0,184},{8,0,12},{8,0,140},{8,0,76},
{9,0,248},{7,16,3},{8,0,82},{8,0,18},{8,21,163},{7,19,35},{8,0,114},
{8,0,50},{9,0,196},{7,17,11},{8,0,98},{8,0,34},{9,0,164},{8,0,2},
{8,0,130},{8,0,66},{9,0,228},{7,16,7},{8,0,90},{8,0,26},{9,0,148},
{7,20,67},{8,0,122},{8,0,58},{9,0,212},{7,18,19},{8,0,106},{8,0,42},
{9,0,180},{8,0,10},{8,0,138},{8,0,74},{9,0,244},{7,16,5},{8,0,86},
{8,0,22},{8,72,0},{7,19,51},{8,0,118},{8,0,54},{9,0,204},{7,17,15},
{8,0,102},{8,0,38},{9,0,172},{8,0,6},{8,0,134},{8,0,70},{9,0,236},
{7,16,9},{8,0,94},{8,0,30},{9,0,156},{7,20,99},{8,0,126},{8,0,62},
{9,0,220},{7,18,27},{8,0,110},{8,0,46},{9,0,188},{8,0,14},{8,0,142},
{8,0,78},{9,0,252},{7,96,0},{8,0,81},{8,0,17},{8,21,131},{7,18,31},
{8,0,113},{8,0,49},{9,0,194},{7,16,10},{8,0,97},{8,0,33},{9,0,162},
{8,0,1},{8,0,129},{8,0,65},{9,0,226},{7,16,6},{8,0,89},{8,0,25},
{9,0,146},{7,19,59},{8,0,121},{8,0,57},{9,0,210},{7,17,17},{8,0,105},
{8,0,41},{9,0,178},{8,0,9},{8,0,137},{8,0,73},{9,0,242},{7,16,4},
{8,0,85},{8,0,21},{8,16,258},{7,19,43},{8,0,117},{8,0,53},{9,0,202},
{7,17,13},{8,0,101},{8,0,37},{9,0,170},{8,0,5},{8,0,133},{8,0,69},
{9,0,234},{7,16,8},{8,0,93},{8,0,29},{9,0,154},{7,20,83},{8,0,125},
{8,0,61},{9,0,218},{7,18,23},{8,0,109},{8,0,45},{9,0,186},{8,0,13},
{8,0,141},{8,0,77},{9,0,250},{7,16,3},{8,0,83},{8,0,19},{8,21,195},
{7,19,35},{8,0,115},{8,0,51},{9,0,198},{7,17,11},{8,0,99},{8,0,35},
{9,0,166},{8,0,3},{8,0,131},{8,0,67},{9,0,230},{7,16,7},{8,0,91},
{8,0,27},{9,0,150},{7,20,67},{8,0,123},{8,0,59},{9,0,214},{7,18,19},
{8,0,107},{8,0,43},{9,0,182},{8,0,11},{8,0,139},{8,0,75},{9,0,246},
{7,16,5},{8,0,87},{8,0,23},{8,78,0},{7,19,51},{8,0,119},{8,0,55},
{9,0,206},{7,17,15},{8,0,103},{8,0,39},{9,0,174},{8,0,7},{8,0,135},
{8,0,71},{9,0,238},{7,16,9},{8,0,95},{8,0,31},{9,0,158},{7,20,99},
{8,0,127},{8,0,63},{9,0,222},{7,18,27},{8,0,111},{8,0,47},{9,0,190},
{8,0,15},{8,0,143},{8,0,79},{9,0,254},{7,96,0},{8,0,80},{8,0,16},
{8,20,115},{7,18,31},{8,0,112},{8,0,48},{9,0,193},{7,16,10},{8,0,96},
{8,0,32},{9,0,161},{8,0,0},{8,0,128},{8,0,64},{9,0,225},{7,16,6},
{8,0,88},{8,0,24},{9,0,145},{7,19,59},{8,0,120},{8,0,56},{9,0,209},
{7,17,17},{8,0,104},{8,0,40},{9,0,177},{8,0,8},{8,0,136},{8,0,72},
{9,0,241},{7,16,4},{8,0,84},{8,0,20},{8,21,227},{7,19,43},{8,0,116},
{8,0,52},{9,0,201},{7,17,13},{8,0,100},{8,0,36},{9,0,169},{8,0,4},
{8,0,132},{8,0,68},{9,0,233},{7,16,8},{8,0,92},{8,0,28},{9,0,153},
{7,20,83},{8,0,124},{8,0,60},{9,0,217},{7,18,23},{8,0,108},{8,0,44},
{9,0,185},{8,0,12},{8,0,140},{8,0,76},{9,0,249},{7,16,3},{8,0,82},
{8,0,18},{8,21,163},{7,19,35},{8,0,114},{8,0,50},{9,0,197},{7,17,11},
{8,0,98},{8,0,34},{9,0,165},{8,0,2},{8,0,130},{8,0,66},{9,0,229},
{7,16,7},{8,0,90},{8,0,26},{9,0,149},{7,20,67},{8,0,122},{8,0,58},
{9,0,213},{7,18,19},{8,0,106},{8,0,42},{9,0,181},{8,0,10},{8,0,138},
{8,0,74},{9,0,245},{7,16,5},{8,0,86},{8,0,22},{8,72,0},{7,19,51},
{8,0,118},{8,0,54},{9,0,205},{7,17,15},{8,0,102},{8,0,38},{9,0,173},
{8,0,6},{8,0,134},{8,0,70},{9,0,237},{7,16,9},{8,0,94},{8,0,30},
{9,0,157},{7,20,99},{8,0,126},{8,0,62},{9,0,221},{7,18,27},{8,0,110},
{8,0,46},{9,0,189},{8,0,14},{8,0,142},{8,0,78},{9,0,253},{7,96,0},
{8,0,81},{8,0,17},{8,21,131},{7,18,31},{8,0,113},{8,0,49},{9,0,195},
{7,16,10},{8,0,97},{8,0,33},{9,0,163},{8,0,1},{8,0,129},{8,0,65},
{9,0,227},{7,16,6},{8,0,89},{8,0,25},{9,0,147},{7,19,59},{8,0,121},
{8,0,57},{9,0,211},{7,17,17},{8,0,105},{8,0,41},{9,0,179},{8,0,9},
{8,0,137},{8,0,73},{9,0,243},{7,16,4},{8,0,85},{8,0,21},{8,16,258},
{7,19,43},{8,0,117},{8,0,53},{9,0,203},{7,17,13},{8,0,101},{8,0,37},
{9,0,171},{8,0,5},{8,0,133},{8,0,69},{9,0,235},{7,16,8},{8,0,93},
{8,0,29},{9,0,155},{7,20,83},{8,0,125},{8,0,61},{9,0,219},{7,18,23},
{8,0,109},{8,0,45},{9,0,187},{8,0,13},{8,0,141},{8,0,77},{9,0,251},
{7,16,3},{8,0,83},{8,0,19},{8,21,195},{7,19,35},{8,0,115},{8,0,51},
{9,0,199},{7,17,11},{8,0,99},{8,0,35},{9,0,167},{8,0,3},{8,0,131},
{8,0,67},{9,0,231},{7,16,7},{8,0,91},{8,0,27},{9,0,151},{7,20,67},
{8,0,123},{8,0,59},{9,0,215},{7,18,19},{8,0,107},{8,0,43},{9,0,183},
{8,0,11},{8,0,139},{8,0,75},{9,0,247},{7,16,5},{8,0,87},{8,0,23},
{8,78,0},{7,19,51},{8,0,119},{8,0,55},{9,0,207},{7,17,15},{8,0,103},
{8,0,39},{9,0,175},{8,0,7},{8,0,135},{8,0,71},{9,0,239},{7,16,9},
{8,0,95},{8,0,31},{9,0,159},{7,20,99},{8,0,127},{8,0,63},{9,0,223},
{7,18,27},{8,0,111},{8,0,47},{9,0,191},{8,0,15},{8,0,143},{8,0,79},
{9,0,255}
};

static const code distfix[32] = {
{16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025},
{21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193},
{18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385},
{19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577},
{16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073},
{22,5,193},{64,5,0}
{5,16,1},{5,23,257},{5,19,17},{5,27,4097},{5,17,5},{5,25,1025},
{5,21,65},{5,29,16385},{5,16,3},{5,24,513},{5,20,33},{5,28,8193},
{5,18,9},{5,26,2049},{5,22,129},{5,64,0},{5,16,2},{5,23,385},
{5,19,25},{5,27,6145},{5,17,7},{5,25,1537},{5,21,97},{5,29,24577},
{5,16,4},{5,24,769},{5,20,49},{5,28,12289},{5,18,13},{5,26,3073},
{5,22,193},{5,64,0}
};
6 changes: 3 additions & 3 deletions inflate.c
Expand Up @@ -365,8 +365,8 @@ void makefixed()
low = 0;
for (;;) {
if ((low % 7) == 0) printf("\n ");
printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op,
state.lencode[low].bits, state.lencode[low].val);
printf("{%u,%u,%d}", state.lencode[low].bits, state.lencode[low].op,
state.lencode[low].val);
if (++low == size) break;
putchar(',');
}
Expand All @@ -376,7 +376,7 @@ void makefixed()
low = 0;
for (;;) {
if ((low % 6) == 0) printf("\n ");
printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits,
printf("{%u,%u,%d}", state.distcode[low].bits, state.distcode[low].op,
state.distcode[low].val);
if (++low == size) break;
putchar(',');
Expand Down
2 changes: 1 addition & 1 deletion inftrees.h
Expand Up @@ -22,8 +22,8 @@
of a literal, the base length or distance, or the offset from
the current table to the next table. Each entry is four bytes. */
typedef struct {
unsigned char op; /* operation, extra bits, table bits */
unsigned char bits; /* bits in this part of the code */
unsigned char op; /* operation, extra bits, table bits */
unsigned short val; /* offset in table or code value */
} code;

Expand Down

0 comments on commit eb3000f

Please sign in to comment.