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