out1.resize(num_docids + 128);
out2.resize(num_docids + 128);
unsigned char *pldata = reinterpret_cast<unsigned char *>(&pl[0]);
- p4nd1dec32(pldata, num_docids, &out1[0]);
- decode_pfor_delta1<128>(pldata, num_docids, &out2[0]);
+ p4nd1dec128v32(pldata, num_docids, &out1[0]);
+ decode_pfor_delta1<128>(pldata, num_docids, /*interleaved=*/true, &out2[0]);
for (unsigned i = 0; i < num_docids; ++i) {
if (out1[i] != out2[i]) {
if (++num_errors < 10) {
steady_clock::time_point start = steady_clock::now();
for (auto &[pl, num_docids] : posting_lists) {
unsigned char *pldata = reinterpret_cast<unsigned char *>(&pl[0]);
- p4nd1dec32(pldata, num_docids, &dummy[0]);
+ p4nd1dec128v32(pldata, num_docids, &dummy[0]);
}
steady_clock::time_point end = steady_clock::now();
double reference_sec = duration<double>(end - start).count();
start = steady_clock::now();
for (auto &[pl, num_docids] : posting_lists) {
unsigned char *pldata = reinterpret_cast<unsigned char *>(&pl[0]);
- decode_pfor_delta1<128>(pldata, num_docids, &dummy[0]);
+ decode_pfor_delta1<128>(pldata, num_docids, /*interleaved=*/true, &dummy[0]);
}
end = steady_clock::now();
double own_sec = duration<double>(end - start).count();
- fprintf(stderr, "Decoding with own implementation: %.1f ms (%.2f%% speed)\n", 1e3 * own_sec, 100.0 * reference_sec / own_sec);
+ fprintf(stderr, "Decoding with own implementation: %.3f ms (%.2f%% speed)\n", 1e3 * own_sec, 100.0 * reference_sec / own_sec);
}