Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Performance improvements on memory copies inside of btree by moving 2 bytes at a time instead of just 1 byte at a time. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
897f56a158ebe62758c9998e4941ae04 |
User & Date: | drh 2011-06-03 23:28:33.011 |
References
2011-06-06
| ||
13:38 | Add assert() statements to verify that u16 pointers associated with the enhancement in [897f56a158] are always 2-byte aligned. (check-in: 98ccfa930e user: drh tags: trunk) | |
Context
2011-06-04
| ||
01:43 | Performance improvement to the btree search routine. (check-in: 65db822f20 user: drh tags: trunk) | |
2011-06-03
| ||
23:28 | Performance improvements on memory copies inside of btree by moving 2 bytes at a time instead of just 1 byte at a time. (check-in: 897f56a158 user: drh tags: trunk) | |
21:34 | Performance enhancement to the blob-literal tokenizer. (check-in: 61aa2031f1 user: drh tags: trunk) | |
Changes
Changes to src/btree.c.
︙ | |||
5418 5419 5420 5421 5422 5423 5424 | 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 | - + - | rc = freeSpace(pPage, pc, sz); if( rc ){ *pRC = rc; return; } endPtr = &data[pPage->cellOffset + 2*pPage->nCell - 2]; while( ptr<endPtr ){ |
︙ | |||
5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 | 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 | + | int idx = 0; /* Where to write new cell content in data[] */ int j; /* Loop counter */ int end; /* First byte past the last cell pointer in data[] */ int ins; /* Index in data[] where new cell pointer is inserted */ int cellOffset; /* Address of first cell pointer in data[] */ u8 *data; /* The content of the whole page */ u8 *ptr; /* Used for moving information around in data[] */ u8 *endPtr; /* End of the loop */ int nSkip = (iChild ? 4 : 0); if( *pRC ) return; assert( i>=0 && i<=pPage->nCell+pPage->nOverflow ); assert( pPage->nCell<=MX_CELL(pPage->pBt) && MX_CELL(pPage->pBt)<=10921 ); |
︙ | |||
5510 5511 5512 5513 5514 5515 5516 | 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 | - - - + + + + + | assert( idx+sz <= (int)pPage->pBt->usableSize ); pPage->nCell++; pPage->nFree -= (u16)(2 + sz); memcpy(&data[idx+nSkip], pCell+nSkip, sz-nSkip); if( iChild ){ put4byte(&data[idx], iChild); } |
︙ | |||
5557 5558 5559 5560 5561 5562 5563 5564 | 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 | + - + - + | /* Check that the page has just been zeroed by zeroPage() */ assert( pPage->nCell==0 ); assert( get2byteNotZero(&data[hdr+5])==nUsable ); pCellptr = &data[pPage->cellOffset + nCell*2]; cellbody = nUsable; for(i=nCell-1; i>=0; i--){ u16 sz = aSize[i]; pCellptr -= 2; |
︙ |