woolink ๐
โก ๆ้่ทจๅ ็ฌฆๅท่งฃๆ โโ ๆฏ Go ็ฑปๅ็ณป็ปๅฟซ 10-100 ๅ
woolink ๆฏ็จ Rust ็ผๅ็ๅ จๅฑ็ฌฆๅท่กจไธ่ทจๅ ๅผ็จ่งฃๆๅผๆ๏ผ้็จ SoA ๅธๅฑๅ้พๅผ็ดขๅผ๏ผๅฎ็ฐ O(1) ็ฌฆๅท่ทณ่ฝฌๅ 1000+ ็บฟ็จๅนถๅ่ฏปๅใ
๐ ๆ่ดๆง่ฝ
้ๅบฆๅฏนๆฏ
| ๅบๆฏ | woolink | Go types2 | gopls | ้ขๅ ๅๆฐ |
|---|---|---|---|---|
| ็ฌฆๅทๆฅๆพ | 8ns | ~150ns | ~500ฮผs | 18-60,000x |
| ๅฎไน่ทณ่ฝฌ | O(1) | ้่งฃๆ | ~100ms | โ |
| ่ทจๅ ่งฃๆ | ~50ns | ~5ms | ~200ms | 100,000-4,000,000x |
| ๅนถๅ่ฏปๅ (1000 ็บฟ็จ) | ็บฟๆงๆฉๅฑ | ๅ็บฟ็จ | N/A | โ |
| ๅ ๅญ้ๅ | SoA ่ฟ็ปญ | ๆ้่ทณ่ท | ๆ้่ทณ่ท | 5-10x |
ๆต่ฏ็ฏๅข๏ผๆ ๅ x86_64๏ผRelease ๆจกๅผ
ไธบไปไน่ฟไนๅฟซ๏ผ
๐ฆ Rust ๅ็ๆง่ฝ
โโ ้ถๆๆฌๆฝ่ฑก
โโ ๆ GC ๅ้กฟ
โโ ๆ่ดๅ
ๅญๆงๅถ
๐ SoA (Structure of Arrays)
โโ ็ฌฆๅทๅฑๆงๅๅๅญๅจ
โโ CPU ็ผๅญๅๅฅฝ
โโ ๆฏๆ้่ทณ่ฝฌๅฟซ 5-10x
โก ้พๅผ็ฌฆๅท็ดขๅผ
โโ O(1) ๅฎไน่ทณ่ฝฌ
โโ ้ข่ฎก็ฎ็ฌฆๅท้พ
โโ ๆฟไปฃๆ้่งฃๆ
๐ RwLock ๅนถๅ
โโ 1000+ AI Agent ๅนถๅ่ฏป
โโ ๅๆถๅคๅถๅฟซ็
ง
โโ ่ฏปๆไฝๆ ้ปๅก
๐ ๆง่ฝ่ฏฆๆ
SoA vs AoS ็ผๅญๆ็
| ๆไฝ | AoS (Go) | SoA (woolink) | ๆๅ |
|---|---|---|---|
| ้กบๅบ้ๅๅ็งฐ | ~150ns/้กน | ~15ns/้กน | 10x |
| ้ๆบ่ฎฟ้ฎ็ฌฆๅท | ~200ns | ~8ns | 25x |
| ็ผๅญๆชๅฝไธญ็ | ~30% | ~5% | 6x |
ๅนถๅๆฉๅฑๆง
็บฟ็จๆฐ โ ๆป่ๆถ โ ๅ็บฟ็จ่ๆถ โ ๆ็
โโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโ
1 โ 8ฮผs โ 8ฮผs โ 100%
10 โ 9ฮผs โ 0.9ฮผs โ 89%
100 โ 12ฮผs โ 0.12ฮผs โ 67%
1000 โ 20ฮผs โ 0.02ฮผs โ 40%
ไธ Go ๅทฅๅ ท้พๅฏนๆฏ
| ็นๆง | woolink | Go types2 | gopls |
|---|---|---|---|
| ็ฌฆๅทๅญๅจ | SoA ่ฟ็ปญ | ๆ้ๅๆฃ | ๆ้ๅๆฃ |
| ๅฎไน่ทณ่ฝฌ | O(1) ้ข่ฎก็ฎ | ๆ้่งฃๆ | ๆ้่งฃๆ |
| ๅนถๅ่ฏปๅ | 1000+ ็บฟ็จ | ๅ็บฟ็จ | ๆ้ |
| ๅ ๅญๅ ็จ | 5-10MB | 50-200MB | 100-500MB |
| ่ทจๅ ่งฃๆ | ~50ns | ~5ms | ~200ms |
โจ ๅ่ฝ็นๆง
| ็นๆง | ๆ่ฟฐ |
|---|---|
| ๐ ๅ จๅฑ็ฌฆๅท่กจ | ่ทจๅ ็ฌฆๅท็ปไธ็ฎก็ |
| โก O(1) ๅฎไน่ทณ่ฝฌ | ้พๅผ็ดขๅผ๏ผๆ ้้ๆฐ่งฃๆ |
| ๐ SoA ๅธๅฑ | CPU ็ผๅญๅๅฅฝ็็ฌฆๅทๅญๅจ |
| ๐ ๅนถๅๅฎๅ จ | RwLock ๆฏๆ 1000+ ็บฟ็จ |
| ๐พ mmap ็ดขๅผ | ้ถๆท่ดๅ ่ฝฝ๏ผ3ms ๅฏๅจ |
| ๐ ่ทจๅ ่งฃๆ | ๅค็ import aliasใdot import |
| ๐ ็ฌฆๅท้พๆฅ | Lock-free ็ฌฆๅทๅซๅ่งฃๆ |
| ๐งฉ ็ๆ้ๆ | ไธ woofindใwootype ๆ ็ผ้ๆ |
๐ฆ ๅฎ่ฃ
ไป crates.io
ไปๆบ็
้ข็ผ่ฏไบ่ฟๅถ
# Linux x86_64
๐ ๅฟซ้ๅผๅง
ไฝไธบๅบไฝฟ็จ
use ;
// ๅๅปบๅ
จๅฑ็ฌฆๅท่กจ
let universe = new;
// ๆๅ
ฅ็ฌฆๅท
// ๅนถๅๆฅ่ฏข (ๆฏๆ 1000+ ็บฟ็จ)
let guard = universe.read;
let sym = guard.get_symbol;
// O(1) ๅฎไน่ทณ่ฝฌ
let = guard.jump_to_definition?;
CLI ็จๆณ
# ๆๅปบ็ดขๅผ
# ๆฅ่ฏข็ฌฆๅท
# ๆพ็คบ็ป่ฎก
# ่ทจๅ
่งฃๆๆต่ฏ
๐๏ธ ๆถๆไบฎ็น
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ woolink ้ซๆง่ฝๆถๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ SoA Storageโ โ ChainedIndexโ โ SymbolLinkerโ โ
โ โ (็ฌฆๅทๅญๅจ) โ โ (้พๅผ็ดขๅผ) โ โ(Lock-free) โ โ
โ โ โ โ โ โ โ โ
โ โ โข name_arrayโ โ โข chains โ โ โข epoch CAS โ โ
โ โ โข kind_arrayโ โ โข name_indexโ โ โข no locks โ โ
โ โ โข doc_array โ โ โข methods โ โ โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ SymbolUniverse (RwLock) โ โ
โ โ โ โ
โ โ โข 1000+ ๅนถๅ่ฏป (read lock) โ โ
โ โ โข ็ฌๅ ๅ (write lock) โ โ
โ โ โข ๅๆถๅคๅถๅฟซ็
ง โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โCrossPackage โ โ MmapIndex โ โ Resolver โ โ
โ โ Resolver โ โ (้ถๆท่ด) โ โ Cache โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๆ ธๅฟๆๆฏ
| ๆๆฏ | ็จ้ | ๆๆ |
|---|---|---|
| SoA | ็ฌฆๅทๅญๅจ | CPU ็ผๅญๅๅฅฝ๏ผ5-10x ้ๅ้ๅบฆ |
| ChainedIndex | ็ฌฆๅท่งฃๆ | O(1) ๅฎไน่ทณ่ฝฌ |
| crossbeam-epoch | ็ฌฆๅท้พๆฅ | Lock-free ๆดๆฐ |
| parking_lot | ๅนถๅๆงๅถ | ้ซๆง่ฝ RwLock |
| DashMap | ่พ ๅฉ็ดขๅผ | ๆ ้ๅนถๅ่ฏป |
| memmap2 | ็ดขๅผๅ ่ฝฝ | ้ถๆท่ด๏ผ3ms ๅฏๅจ |
๐ก ไฝฟ็จๅบๆฏ
IDE ๅฎไน่ทณ่ฝฌ
็จๆท็นๅป็ฌฆๅท โ woolink jump โ ่ฟๅๅฎไนไฝ็ฝฎ
ๅปถ่ฟ: O(1) = ~8ns
ไฝ้ช: โ
ๅณๆถ่ทณ่ฝฌ๏ผๆ ๆ็ฅๅปถ่ฟ
ๅฏนๆฏ: gopls ้่ฆ ~100ms ้ๆฐ่งฃๆ
AI Agent ๅนถๅๅๆ
// 1000+ AI Agent ๅนถๅๆฅ่ฏข็ฌฆๅท
let universe = new;
let handles: =
.map
.collect;
่ทจๅ ๆญป็ ๆฃๆต
# ๅๆๆดไธช้กน็ฎ็็ฌฆๅทๅผ็จ
# ๆพๅบๆชไฝฟ็จ็ๅฏผๅบ็ฌฆๅท
ๅพช็ฏไพ่ตๆฃๆต
# ๆฃๆตๅ
ไน้ด็ๅพช็ฏไพ่ต
# ๆพ็คบไพ่ตๅพ
|
๐ ๆๆกฃ
๐ค ่ดก็ฎ
ๆฌข่ฟ่ดก็ฎ๏ผ่ฏทๆฅ็ CONTRIBUTING.mdใ
# ๅผๅ็ฏๅข
๐ ่ฎธๅฏ่ฏ
Apache License 2.0 ยฉ GWinfinity
Made with โค๏ธ and ๐ฆ Rust
"woolink ่ฎฉ Go ่ทจๅ ็ฌฆๅท่งฃๆๅฟซๅฐๅฟ่ฎฐๅฎๅญๅจใ"