Facebook ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ²ΠΈΡ
Π° ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Ρ
Π΅Ρ ΡΠ°Π±Π»ΠΈΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ F14, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. F14 ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Facebook ΠΊΠ°ΡΠΎ Π·Π°ΠΌΠ΅ΡΡΠΈΡΠ΅Π» Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²ΠΈΠ΄ΠΎΠ²Π΅ Ρ
Π΅Ρ ΡΠ°Π±Π»ΠΈΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π±Π΅Π· Π΄Π° ΠΆΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. F14 Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅Π²ΡΠ·Ρ
ΠΎΠΆΠ΄Π° Ρ
Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ google::sparse_hash_map, ΠΊΠΎΠΈΡΠΎ Π΄ΠΎΡΠ΅Π³Π° ΡΠ΅ ΡΠΌΡΡΠ°Ρ
Π° Π·Π° Π½Π°ΠΉ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++ ΠΈ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π±Π΅Π·ΡΠΌΠΈΠ΅.
F14 ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π·Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ±Π»ΡΡΡΠΊ, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Π΄Π²ΠΎΠΉΠ½ΠΎ Ρ
Π΅ΡΠΈΡΠ°Π½Π΅ Ρ 14 ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΠ±ΠΈ (Π²Π΅ΡΠΈΠ³Π° ΠΎΡ 14 ΡΠ»ΠΎΡΠ° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π² Π΅Π΄Π½Π° ΠΊΠ»Π΅ΡΠΊΠ° Π½Π° Ρ
Π΅Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°, Π° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π΅ΡΠΊΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΏΠΎΠΌΠ°Π³Π°ΡΠ΅Π»Π½Π° Ρ
Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ). ΠΠ° Π΄Π° ΡΠ΅ ΡΡΠΊΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»Π΅ΡΠΊΠΈ, Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ SSE2 Π·Π° x86_64 ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ NEON Π·Π° Aarch64, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΠ»ΠΎΡΠΎΠ²Π΅ Ρ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π²Π΅ΡΠΈΠ³ΠΈ ΠΈ ΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ Π²ΡΠ² Π²Π΅ΡΠΈΠ³Π°ΡΠ°. ΠΠ»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ 14 ΡΠ»ΠΎΡΠ° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π½Π°Π²Π΅Π΄Π½ΡΠΆ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΈΡΡ Π±Π°Π»Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠ΅ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° ΠΈ Π±ΡΠΎΡ Π½Π° ΠΊΠΎΠ»ΠΈΠ·ΠΈΠΈΡΠ΅.
Π‘ΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½Π° F14 Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ:
- F14NodeMap - ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΠ°ΠΌΠ΅Ρ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈ ΡΡΠ΅Π΄Π½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅. ΠΠ°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° malloc ΠΏΡΠΈ Π²ΡΡΠΊΠΎ Π²ΠΌΡΠΊΠ²Π°Π½Π΅;
- F14ValueMap - ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π·Π° ΠΌΠ°Π»ΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅. ΠΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π² ΡΠ°ΠΌΠΈΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ (inline). ΠΠ° ΡΡΠ΅Π΄Π½ΠΈ ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°;
- F14VectorMap - ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, Π½ΠΎ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ Π·Π° ΠΏΡΠΎΡΡΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Ρ Π² Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΠΏΠΎΠΏΡΠ»Π²Π°Π½ ΠΌΠ°ΡΠΈΠ² ΠΈ ΡΠ΅ Π°Π΄ΡΠ΅ΡΠΈΡΠ°Ρ ΠΎΡ 32-Π±ΠΈΡΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π»;
- F14FastMap Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ. ΠΠΊΠΎ ΠΊΠ»ΡΡΡΡ Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ ΠΎΡ 24 Π±Π°ΠΉΡΠ°, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΠΈΠ·Π±ΠΈΡΠ° F14ValueMap, Π° Π°ΠΊΠΎ Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅, ΡΠ΅ ΠΈΠ·Π±ΠΈΡΠ° F14VectorMap.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru