Commit 8578b4e
committed
feat(perf): implement zero-copy reading from SharedArrayBuffer
- Add `TransferableDataStructure.SUPPORTS_SAB_VIEW` to detect if environment supports decoding SAB views directly.
- Update `ShareableMap` and `ShareableArray` to skip intermediate buffer copy when reading if supported.
- Fix `NumberEncoder` to respect `byteOffset` and `byteLength` of the input buffer, enabling correct `DataView` creation on views.
Benchmarked improvement:
- ShareableMap.get(): ~1.8x speedup
- ShareableArray.at(): ~1.65x speedup1 parent ba797cc commit 8578b4e
4 files changed
Lines changed: 25 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
2 | 14 | | |
3 | 15 | | |
4 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
887 | 887 | | |
888 | 888 | | |
889 | 889 | | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
890 | 894 | | |
891 | 895 | | |
892 | 896 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
730 | 730 | | |
731 | 731 | | |
732 | 732 | | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
733 | 737 | | |
734 | 738 | | |
735 | 739 | | |
| |||
762 | 766 | | |
763 | 767 | | |
764 | 768 | | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
765 | 773 | | |
766 | 774 | | |
767 | 775 | | |
| |||
0 commit comments