本文æ¥è‡ªå“”哩哔哩通用技术团队分享,下文˜q›è¡Œäº†æŽ’版优化和修订ã€?/p>
1ã€å¼•a€ éšç€ AI 技术快速å‘展,业务å¯?AI 能力的æÍ求日益增é•Ñ€‚当 AI æœåŠ¡é¢å¯¹å¤„ç†å¤§è§„æ¨¡è¯·æ±‚å’Œé«˜åÆˆå‘æµé‡æ—¶åQŒAI ¾|‘å…³ä»Žä¸æ‰®æ¼”ç€è‡›_…³é‡è¦çš„角艌Ӏ‚AI æœåŠ¡é€šå¸¸æ¶‰åŠå¤§é‡çš„计½Ž—ä“Q务和讑֤‡èµ„æºå 用åQŒæ¤æ—‰™œ€è¦ä¸€ä¸?AI ¾|‘关负责åè°ƒ˜q™äº›è¯äh±‚æ¥ç¡®ä¿ç³»¾lŸçš„½E›_®šæ€§ä¸Žé«˜æ•ˆæ€§ã€‚å› æ¤ï¼Œä¸Žä¼ ¾lŸå¾®æœåŠ¡æž¶æž„¾cÖM¼¼åQŒæˆ‘们将相关 API ½Ž¡ç†çš„功能(如æµé‡æŽ§åˆ¶ã€ç”¨æˆ·é‰´æƒã€é…é¢è®¡è´V€è´Ÿè½½å‡è¡¡ã€API 路由½{‰ï¼‰é›†ä¸æ”„¡½®åœ?AI ¾|‘关层,å¯ä»¥é™ä½Ž¾pÈ»Ÿæ•´ä½“夿‚åº¦åÆˆæå‡å¯ç»´æŠ¤æ€§ã€?/p>
本文è¦åˆ†äº«çš„æ˜¯B站在大模型时代基于多模型AI的网å…Ïxž¶æž„设计和实践æ€È»“åQŒå¸Œæœ›èƒ½å¸¦ç»™ä½ å¯å‘ã€?/strong>
* 相关阅读åQ?/strong>ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">全民AI时代åQŒå¤§æ¨¡åž‹å®¢æˆ·ç«¯å’ŒæœåŠ¡ç«¯çš„å®žæ—¶é€šä¿¡åˆ°åº•ç”¨ä»€ä¹ˆå议?ã€?/p>
技术交‹¹ï¼š
- ¿UÕdŠ¨ç«¯IMå¼€å‘å…¥é—¨æ–‡ç« ï¼šã€?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">新手入门一½‹‡å°±å¤Ÿï¼šä»Žé›¶å¼€å‘移动端IMã€?/p>
- å¼€æºIM框架æºç åQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">https://github.com/JackJiang2011/MobileIMSDKåQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">备用地å€ç‚ÒŽ¤åQ?/p>
åQˆæœ¬æ–‡å·²åŒæ¥å‘布于:http://www.52im.net/thread-4831-1-1.htmlåQ?/a>
2ã€ç³»åˆ—æ–‡ç«?/h1> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?一)åQšäº¬ä¸œäº¬éº¦çš„生äñ”¾U§TCP¾|‘关技术实跉|€È»“ ã€?/li>ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?äº?åQšçŸ¥ä¹Žåƒä¸‡çñ”òq¶å‘的高性能长连接网å…ÏxŠ€æœ¯å®žè·?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?ä¸?åQšæ‰‹æ·˜äº¿¾U§ç§»åŠ¨ç«¯æŽ¥å…¥å±‚ç½‘å…³çš„æŠ€æœ¯æ¼”˜q›ä¹‹è·?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å›?åQšçˆ±å¥‡è‰ºWebSocket实时推é€ç½‘å…ÏxŠ€æœ¯å®žè·?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?äº?åQšå–œé©¬æ‹‰é›…è‡ªç ”äº¿¾U§API¾|‘关技术实è·?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å…?åQšçŸ³å¢¨æ–‡æ¡£å•æœ?0万WebSocket长连接架构实è·?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?ä¸?åQšå°¾c›_°çˆ±å•æœ?20万长˜qžæŽ¥æŽ¥å…¥å±‚的架构演进ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å…?åQšB站基于微æœåŠ¡çš„API¾|‘å…³ä»?åˆ?的演˜q›ä¹‹è·?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?ä¹?åQšåŽ»å“ªå„¿¾|‘酒店高性能业务¾|‘关技术实è·?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å?åQšç™¾åº¦åŸºäºŽGoçš„åƒä¸‡çñ”¾lŸä¸€é•¿è¿žæŽ¥æœåŠ¡æž¶æž„å®žè·?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å一)åQšæ¿U˜è…¾è®¯å…¬¾|‘TGW¾|‘å…³¾pÈ»Ÿçš„æŠ€æœ¯æž¶æž„æ¼”˜q?/a>ã€?/li> ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">长连接网å…ÏxŠ€æœ¯ä¸“é¢?å二)åQšå¤§æ¨¡åž‹æ—¶ä»£å¤šæ¨¡åž‹AI¾|‘关的架构设计与实现》(* 本文 åQ?/li> 3ã€AI¾|‘关技术概è§?/h1> AI ¾|‘关是一个用于统一接入和调度大è¯è¨€æ¨¡åž‹åQˆLLMåQ‰æœåŠ¡çš„¾pÈ»ŸåQŒæ”¯æŒå¤šä¾›åº”商ã€å¤šæ¨¡åž‹ã€è´Ÿè½½å‡è¡¡è°ƒåº¦çš„½Ž¡ç†ã€‚åŒæ—¶å…·å¤‡ç»Ÿä¸€é‰´æƒã€Token é…颽ޡç†ã€å®‰å…¨å®¡è®¡ä¸Žå¯è§‚‹¹‹èƒ½åŠ›ï¼Œ¼‹®ä¿ API 调用的安全性和½E›_®šæ€§ã€‚è´Ÿè½½å‡è¡¡æ¨¡å—,能够æ ÒŽ®æä¾›å•†å¤š¾U¿èµ\ã€å¤šæ¨¡åž‹ å’?API Key ˜q›è¡Œç‰|´»è·¯ç”±åQŒåƈ适用于多模型接入ã€å¤š¿UŸæˆ·½{‰å¤æ‚场景ã€?/p>
4ã€æ•´ä½“架构设è®?/h1> AI ¾|‘å…³çš„æ•´ä½“æž¶æž„å’Œä¼ ç»Ÿ API ¾|‘å…³åŠå…¶¾cÖM¼¼åQŒåœ¨æ•°æ®é¢å’ŒæŽ§åˆ¶é¢ä¸Šæœ‰å‡ 乎相åŒçš„设计ã€?/p>
实际ä¸?AI ¾|‘å…³ž®±æ˜¯è¡ç”ŸäºŽä¹‹å‰å¾®æœåŠ¡å›¢é˜Ÿçš?API GatewayåQŒæˆ‘们在 API Gateway 的基¼‹€ä¸Šåšäº†ä¸€äº›é’ˆå¯?AI 业务接å£çš„ç‰¹æ€§ä¼˜åŒ–ï¼Œå¦‚æ— ¾~“冲区的è¯äh±‚代ç†åQŒæ”¯æŒåŸŸåã€æœåŠ¡å‘çŽ°ç‰æ··åˆè°ƒåº¦åQŒAI ‘…é•¿å“应旉™—´è¯äh±‚的优雅退出ç‰åŠŸèƒ½ã€?/p>
在æ¤åŸºç¡€ä¸Šæˆ‘们ä‹É用于 API Gateway 相类似的数æ®é¢ã€æŽ§åˆ‰™¢åˆ†ç¦»çš„æž¶æž„,控制é¢ä¼šž®†å˜æ›´åŽçš„网关酾|®å‡†å®žæ—¶ä¸‹å‘è‡Ïx•°æ®é¢èŠ‚ç‚¹ã€‚æ•°æ®é¢èŠ‚ç‚¹è¯†åˆ«é…置有更新åŽåœ¨è¿è¡Œæ—¶ä¼šåЍæ€åˆ‡æ¢ä»£ç†å¼•擎至新的代ç†é€»è¾‘下,òq¶ä¿è¯è€çš„代ç†é€»è¾‘会处ç†å®Œå½“下被分é…çš„è¯äh±‚ã€?/p>
在数æ®é¢ä¸ï¼Œæˆ‘们对请求过滤器有两¿U模å¼çš„æŠ½è±¡åQšè¯·æ±‚过滤器和模型过滤器。请求过滤器作用于用æˆïLš„原始è¯äh±‚åQŒè¿™¾c»è¿‡æ»¤å™¨å¾€å¾€è¢«è®¾è®¡ç”¨äºŽå¤„ç†é‰´æƒã€é™‹¹ç‰é€»è¾‘。而模型过滤器作用于请求被转å‘臌™¯¥æ¨¡åž‹æ—Óž¼Œå¸¸ç”¨äºŽæ¨¡åž?API 的兼定w€»è¾‘。比如模型å‘展ä¸ç›®å‰å¯ÒŽ·±åº¦æ€è€?<think> çš„æ ‡½{‘Ö¤„ç†ï¼ŒæŽ¨ç†å¼•æ“Žè‡ªå®šä¹‰å‚æ•°çš„兼容修棽{‰ã€?/p>
除æ¤ä¹‹å¤–控制é¢ä¹Ÿä¼šæä¾?OpenAPI ä¾?AI 模型供给团队上架模型åQŒæ–°å¢?API Key ½{‰æ—¥å¸¸è¿è¥èƒ½åŠ›ã€‚æ¨¡åž‹æä¾›æ–¹å¯ä»¥åœ¨ä¸Šæž¶æ¨¡åž‹æ—¶æ”¯æŒä¸ºæ¨¡åž‹é…¾|®ç›¸åº”çš„ RPMã€TPM 上é™åQŒåƈæ ÒŽ®æ¨¡åž‹çš„æŽ¨ç†å¼•擎选择相应的兼容ç–略。也å¯ä»¥é€šè¿‡ OpenAPI 为å•ä¸?API Key 授æƒç›¸åº”模型½{‰åŠŸèƒ½ã€?/p>
5ã€é‰´æƒè®¤è¯?/h1> åœ¨é‰´æƒæœºåˆ¶ä¸åQŒé‡‡ç”¨ç›®å‰ä¸»‹¹?OpenAI SDK 兼容çš?API Key è®¤è¯æ–ÒŽ¡ˆã€?/p>
Authorization: Bearer <YOUR_API_KEY>
åœ?API Key 的认è¯åŸº¼‹€ä¸Šè¿˜æä¾›¾l†ç²’度的æƒé™æŽ§åˆ¶åŠŸèƒ½åQŒå…è®æ€Ø“æ¯ä¸ª API Key é…ç½®å¯è®¿é—®çš„æ¨¡åž‹èŒƒå›´åQŒä»¥åŠå¯¹ä¸åŒæ¨¡åž‹çš„设¾|®ä¸åŒçš„é…é¢ã€?/p>
å¦å¤–支æŒç‰|´»çš?API Key 有效期酾|®ï¼Œç”¨æˆ·å¯æ ¹æ®éœ€æ±‚设¾|?API Key çš?˜q‡æœŸæ—‰™—´ æˆ?ä¸è¿‡æœŸã€?/p>
6ã€é…é¢ç®¡ç?/h1> 在é…é¢ç®¡ç†ä½“¾p»é‡Œå¯ä»¥é™åˆ¶æ¨¡åž‹æ¶ˆè´¹è€…的调用速率åQŒåœ¨˜q™é‡Œä¸»è¦å‚考了 OpenAI çš„é…é¢ç–略: RPMåQˆæ¯åˆ†é’Ÿè¯äh±‚敎ͼ‰å’?TPMåQˆæ¯åˆ†é’Ÿ Tokens 敎ͼ‰ã€?/p>
在这里å¯ä»¥æŒ‰ç…§äØ“æ¯ä¸ªç”¨æˆ·åˆ†é…ä¸åŒæ¨¡åž‹çš?Token é…é¢åQŒæˆ–指定å•使—‰™—´çš„请求数é™åˆ¶åQŒä»¥¼‹®ä¿ AI æœåŠ¡çš„é«˜æ•ˆè¿è¡Œåƈ防梑…出预算ã€?/p>
åŒæ—¶æˆ‘们˜q˜æ”¯æŒæœˆ¾l´åº¦çš?Token é…é¢åQŒä¸šåŠ¡æŒ‰è‡ªç„¶æœˆè¿›è¡Œé¢„½Ž—ç”³è¯øP¼Œ‘…过预算时请求将被é™åˆ¶ã€‚对于接å…?AI 能力而言åQŒæ¯ä¸ªä¸šåŠ¡éƒ½éœ€è¦æå‰ç”³è¯·é¢„½Ž—é¢åº¦ï¼Œé¿å…带æ¥éš¾ä»¥è´Ÿæ‹…çš„æˆæœ¬ã€?/p>
7ã€å¤šæ¨¡åž‹è®‰K—® ç›®å‰ç‰ˆæœ¬ä»…支æŒåŸºäº?OpenAI API çš„åè®®è{å‘ã€‚ä»¥ç›®å‰æŽ¨ç†å¼•擎å‘展和在¾U?AI 云æœåŠ¡è€Œè¨€åQŒå…¼å®?OpenAI API åè®®å·²ç»æˆäؓ业界å…Þp¯†åQŒåœ¨æ¤åŸº¼‹€ä¸Šæˆ‘们åªéœ€è¦å®žçŽ°æ ¹æ®ç”¨æˆ·éœ€æ±‚的模型å,择优选择一个相应模型的上游 API æä¾›å•†ï¼ˆå…¬å¸è‡ªå¾ IDC或公有云åQ‰ï¼Œòq¶æ›¿æ¢æˆç›¸åº”æœåŠ¡å•†çš„ API Key å’?Upstream 域垮±å¯ä»¥è¿›è¡Œè´Ÿè½½å‡è¡¡ã€?/p>
å¯¹äºŽå…¬å¸ IDC 自å¾çš„æ¨¡åž‹æœåŠ¡è€Œè¨€åQŒæˆ‘们ç‘ô¾l沿用基äº?discovery ½{‰æœåŠ¡å‘现技术æ¥å‘现推ç†å¼•擎节点åQŒç›´æŽ¥å°†è¯äh±‚包装调度臌™¿™äº›è‡ªå»ºæ¨¡åž‹ã€?/p>
8ã€æ¨¡åž‹è´Ÿè½½å‡è¡?/h1> LLM API 的负载å‡è¡¡å’Œä¼ 统实时 API çš„æ¨¡å¼æœ‰å¾ˆå¤§çš„ä¸åŒã€?/p>
ä¼ ç»Ÿ API å¼€å‘ä¸åQ?/strong>一‹Æ¡è¯·æ±‚往往被设计æˆä¼šæžå¤§æ¦‚率地命ä¸ä¸€å—结果缓å˜ï¼Œä¸”缓å?Key 的计½Ž—都比较½Ž€å•ï¼Œå› æ¤å¾ˆå¤šè´Ÿè²å‡è¡¡éƒ½ç®€å•基于请求相应时间ã€è¿žæŽ¥æ•°½{‰ç‰ã€?/p>
åœ?LLM 推ç†åœºæ™¯ä¸‹ï¼š æ¯ä¸ªæŽ¨ç†è¯äh±‚都会带楾|‘关本èín难以评估的计½Ž—时间和讑֤‡èµ„æºå 用åQŒæ¤æ—¶åŸºäº?RPSã€TTFBã€è¿žæŽ¥æ•°½{‰è´Ÿè½½å‡è¡¡ç–略将ä¸å†é€‚用ã€?/p>
åœ?AI ¾|‘关的默认负载å‡è¡¡ç–ç•¥ä¸åQ?/strong>我们主è¦åŸÞZºŽå•模型æœåŠ¡èŠ‚ç‚¹å¤„ç?Token çš„åžå和时åšg能力åQŒåœ¨é»‘盒模å¼ä¸‹è¯„估节点的饱和度。除æ¤ä¹‹å¤–,推ç†å¼•擎自èín和显å¡å…¶å®žä¹Ÿæš´éœ²äº†è®¸å¤šå’Œæ‰§è¡Œé˜Ÿåˆ—ç›¸å…³çš„æŒ‡æ ‡ï¼Œ¾l¼åˆ˜q™äº›æŒ‡æ ‡åŒæ ·é¢„è®¡èƒ½èŽ·å¾—æ¯”ä¼ ç»Ÿè´Ÿè²å‡è¡¡æ›´æœ‰æ•ˆçš„体验ã€?/p>
å¦å¤–åQ?/strong>åŸÞZºŽ Prefix Cache 的节炚w€‰æ‹©åŒæ ·ä¼šæ˜¯ä¸€ä¸ªç›¸å½“有效的调度½{–ç•¥åQŒä½† Prefix Cache 的计½Ž—能力往往需è¦å¤–部æœåŠ¡æ¥˜q›è¡ŒåQŒå› æ?AI ¾|‘å…³åŒæ ·æ”¯æŒæŽ¥å…¥å¤–置的负载å‡è¡¡ç®—法,通过å‰ç½®çš?RPC æ¥è®©å¤–ç½®æœåŠ¡é€‰æ‹©æœ€åˆé€‚的模型节点ã€?/p>
9ã€å¤š¿UŸæˆ·éš”离 业务主è¦é€šè¿‡ 域å + API Key ˜q›è¡Œè®‰K—®å¤§æ¨¡åž‹æŽ¨ç†ï¼Œå¯ä»¥é€šè¿‡åŸŸå˜q›è¡Œ½Ž¡ç†å¯ÒŽŽ¥çš„æŽ¥å£èµ\由,˜q›è¡Œé…置转å‘到指å®?Model Provider æœåŠ¡ã€‚å¦‚æžœéœ€è¦è¿›è¡Œå¤šä¸šåŠ¡éš”ç¦»åQŒåªéœ€è¦é€šè¿‡ä¸åŒçš„域åè®¿é—®åÆˆé…ç½®ä¸åŒçš„è{å‘ç›®æ ‡ã€?/p>
10ã€å¯è§‚测能力 从业务视角,主è¦åˆ†äØ“ Gatewayã€?Domainã€Consumerã€Providerã€UserModelã€UpstreamModel ¾l´åº¦åQŒè¿›è¡ŒæŸ¥è¯¢å’Œè§‚察è¯äh±‚接å£çš„å¯ç”¨çއåQŒä»¥å?QPSã€Latencyã€?xxã€Quota ½{‰æŒ‡æ ‡ã€?/p>
11ã€æ”¯æŒçš„APIåè®® 11.1 概述 åœ?AI ¾|‘å…³ä¸ï¼Œæˆ‘们主è¦ä»?OpenAI æä¾›çš?API ä½œäØ“åŸºç¡€åè®®åQŒè®©å¼€å‘者基äº?OpenAI SDK 实现å„ç§ä¸šåŠ¡åœºæ™¯å¯ÒŽŽ¥ã€?/p>
ç›®å‰æ”¯æŒçš?API å议有:
1åQ?/em> 对è¯å¼æ¨¡åž‹äº¤äº’(CHAT_COMPLETIONåQ‰ï¼› 2åQ?/em> 通用文本å‘釿ޥå£åQˆEMBEDDINGåQ‰ï¼› 3åQ?/em> æç¤ºè¯æ¨¡æ¿ï¼ˆCHAT_TEMPLATEåQ‰ï¼› 4åQ?/em> 模型上下文å议(MODEL_CONTEXT_PROTOCOLåQ?ã€?/li> 业务å¯ä»¥æ ÒŽ®è‡ªå·±ä¸åŒçš„场景进行选择对应的åè®®ã€?/strong>
11.2 对è¯å¼æ¨¡åž‹äº¤äº’(CHAT_COMPLETIONåQ?/h3>对è¯å¼æ¨¡åž‹äº¤äº’是最基础的å议,用于构å¾å…ähœ‰å¤æ‚逻辑的对è¯äº¤äº’ã€‚åŒæ—?API 支æŒä¸Šä¸‹æ–‡æ„ŸçŸ¥çš„对è¯åQŒä‹É得模型能够ç†è§£å’Œå“应多轮交æµåQŒåƈ在对è¯ä¸ä¿æŒåˆç†çš„逻辑和è¯å¢ƒä¸€è‡´æ€§ã€?/p>
å¯¹è¯æŽ¥å£æ˜?LLM 与现实世界沟通的é‡è¦æ¸ é“åQŒå¤§é‡?AI 需求实际上ž®±æ˜¯åœ¨ä¸Žæ¨¡åž‹˜q›è¡Œä¸€è½®æˆ–多轮对è¯å®žçŽ°çš„ã€?/p>
例如业务希望通过 LLM 排查¾U¿ä¸Šæ•…éšœçš„æ½œåœ¨åŽŸå› ï¼Œ½Ž€å•æ¥è¯´å°±æ˜¯å°†åº”用的儙å¹å¯è§‚æµ‹æŒ‡æ ‡ã€æ•…éšœæœŸé—´çš„æ—¥å¿—è®°å½•æˆ–åº”ç”¨ä¸Šä¸‹æ¸¸çš„å˜æ›´è®°å½•以对è¯å½¢å¼å‘ŠçŸ¥ LLMåQŒåƈè®?LLM 输出一ŒDµä¾¿äºŽç¨‹åºç†è§£çš„¾l“果表达模å¼åQŒè®© LLM 从模型数æ®ä¸è®¡ç®—出符åˆç›´è§‰æ½œåœ¨æ•…éšœåŽŸå› ã€?/p>
11.3 通用文本å‘é‡åQˆEMBEDDINGåQ?/h3> 通用文本å‘é‡åQˆEMBEDDINGåQ‰æŽ¥å£çš„æ ¸å¿ƒåŠŸèƒ½æ˜¯å°†æ–‡æœ¬è½¬åŒ–ä¸ºé«˜¾l´å‘é‡ï¼Œæ•æ‰å…¶è¯ä¹‰ç‰¹å¾ã€‚这在需è¦è¿›è¡Œå¤§è§„模信毋‚€ç´¢ã€åŒ¹é…和知识½Ž¡ç†çš„场景丞®¤äؓ关键ã€?/p>
11.4 æç¤ºè¯æ¨¡æ¿ï¼ˆCHAT_TEMPLATEåQ?/h3> æç¤ºè¯æ¨¡æ¿æ˜¯ä¸€¿U结构化的对è¯ç”Ÿæˆæ–¹å¼ï¼Œå…许业务通过讄¡½®é¢„å®šä¹‰çš„æ¨¡æ¿æ¥ç”Ÿæˆç³»¾lŸåŒ–的回å¤ã€‚è¿™¿Uæ–¹å¼å°†è¯è¨€æ¨¡åž‹çš„生æˆèƒ½åŠ›ä¸Žæ¨¡æ¿åŒ–结构相¾l“åˆåQŒä‹É业务能够以普é€?API 的方å¼è¿›è¡Œè¯·æ±‚交互,òq¶å¯ä»¥æ›´é›†ä¸åŒ–地控制生æˆå†…å®¹çš„æ ·å¼å’Œæ ¼å¼ã€?/p>
åŒæ—¶æˆ‘们也支æŒå†…嵌函敎ͼŒä»¥æ–¹ä¾¿åœ¨æç¤ºè¯æ¨¡æ¿è¿›è¡Œå¤„ç†å†…容:
1åQ?/em> len(v any) string 2åQ?/em> jsonify(v any) string 3åQ?/em> make_json_object(v ...any) map[string]any 4åQ?/em> slice_to_index_map(v any, startBy int) map[int]any 以评论内容翻译的场景åQ?/strong>
- path: /v1/reply-to-en
protocol: HTTP
timeout: 300s
middlewares:
- name: v1_chat_template
options:
'@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.ChatTemplateConfig
provider: bilibili
model_name: index
prompt_template: |
ä½ çš„ä»ÕdŠ¡åQšä»¥ä¸‹ç»™å®šæ–‡æœ¬æ˜¯ä¸€ä¸ªB站视频的相关文本信æ¯åQŒå¯èƒ½äØ“æ ‡é¢˜ã€ç®€ä»‹ã€å¼¹òq•或评论åQŒè¯·ä½ å°†¾l™å®šçš„æ–‡æœ¬é€æ¡¾˜»è¯‘æˆè‹±æ–‡ã€‚è¾“å…¥äØ“ä¸€ä¸ªjsonæ ¼å¼åQŒkey为åºåøP¼Œvalue为待¾˜»è¯‘的弹òq•,一共有{{ len .reply_list }}个文本。示例如ä¸?
输入: {"1": "xxx", "2": "xxx"}
输出: {"1": "xxx", "2": "xxx"}
注æ„åQŒç”¨{dyn:xxx}½W¦å·åŒ…裹的是囄¡‰‡å¼•用åQŒä¸éœ€è¦ç¿»è¯‘,直接ä¿ç•™ã€‚用[xxx]包裹的是表情½W¦å·åQŒä¸éœ€è¦ç¿»è¯‘,直接ä¿ç•™ã€‚现在请æ ÒŽ®ä¸Šè¿°è¦æ±‚完æˆå¦‚下片段的翻译,输出一共{{ len .reply_list }}个翻译åŽçš„结果,直接输出¾˜»è¯‘åŽçš„英文åQŒä¸è¦è¿›è¡Œä“Q何解释ã€?/p>
输入: {{ jsonify (slice_to_index_map .reply_list 1) }}
输出:
æç¤ºè¯æ¨¡ç‰ˆæŽ¥å£å®žé™…ä¸Šæ˜¯åŸºäºŽå¯¹è¯æŽ¥å£çš„一¿U高效对接模å¼ã€‚众所周知åQŒè‡ª OpenAI å‘布 ChatGPT åŽï¼Œæç¤ºè¯å·¥½E‹ï¼ˆPrompt EngineeringåQ‰æœ¬íw«è¢«å½“作一¿U技术èµ\¾U¿è€Œæå‡ºã€‚æ½Cø™¯å·¥ç¨‹ä¸»è¦å…Ïx³¨æç¤ºè¯å¼€å‘与优化åQŒå¸®åŠ©ç”¨æˆ·å°†å¤§è¯a€æ¨¡åž‹ç”¨äºŽå„åœºæ™¯å’Œç ”ç©¶é¢†åŸŸã€‚ç ”½I¶äh员å¯åˆ©ç”¨æç¤ºå·¥ç¨‹æ¥æå‡å¤§è¯è¨€æ¨¡åž‹å¤„ç†å¤æ‚ä»ÕdŠ¡åœºæ™¯çš„èƒ½åŠ›ï¼Œå¦‚é—®½{”å’Œ½Ž—术推ç†èƒ½åŠ›ã€?/p>
对于接入 LLM çš„ä¸šåŠ¡ç ”å‘而言åQŒä»–å¯èƒ½æœ¬èínä¸å…·å¤‡å¾ˆå¼ºçš„æç¤ºè¯å·¥½E‹èƒ½åŠ›ï¼›ç”šè‡³æç¤ºè¯çš„优化本èín也å–决于模型的è„Pä»£æ›´æ–°ã€‚å› æ¤å¯¹äºŽè§£å†³ç‰¹å®šé¢†åŸŸçš„业务场景åQŒAI 工程师往往会基于最优模型写出最¾_‘Ö‡†çš„æ½Cø™¯åQŒé€šè¿‡ AI ¾|‘关的æ½Cø™¯æ¨¡ç‰ˆæŽ¥å£å‘布。业务æäº¤ç®€å?JSON KV 对åŽåQŒæ¸²æŸ“出最有效的完整æ½Cø™¯åQŒLLM åŸÞZºŽæœ‰æ•ˆæç¤ºè¯è¾“出最¾_„¡¡®çš„结果ã€?/p>
11.5 模型上下文å议(MODEL_CONTEXT_PROTOCOLåQ?/h3>MCP (Model Context ProtocolåQŒæ¨¡åž‹ä¸Šä¸‹æ–‡åè®®) 是由 Anthropic åœ?2024 òq´åº•推出的一¿U开攑Ö议,旨在让大型è¯a€æ¨¡åž‹åQˆLLMåQ‰èƒ½å¤Ÿä»¥æ ‡å‡†åŒ–的方弘qžæŽ¥åˆ°å¤–éƒ¨æ•°æ®æºå’Œå·¥å…—÷€‚该å议抽象òq¶æ ‡å‡†åŒ–äº?Resourcesã€Promptsã€Tools ½{‰èµ„æºåŠå…¶æŽ¥å…¥æ–¹å¼ï¼Œå…许 LLM Client 应用以一致的方弘qžæŽ¥åˆ°å„¿Uæ•°æ®æºå’Œå·¥å…øP¼Œå¦‚æ–‡ä»¶ã€æ•°æ®åº“ã€API ½{‰ã€?/p>
é…置转å‘到注册ä¸å¿ƒçš„ MCP æœåŠ¡åQ?/strong>
- path: /example-mcp/*
protocol: HTTP
timeout: 300s
middlewares:
- name: v1_mcp_server
options:
'@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.MCPServerConfig
proxy:
name: example-mcp
upstreams:
- url: 'discovery://infra.example.example-mcp'
- path: /example-mcp/*
protocol: HTTP
timeout: 300s
middlewares:
- name: v1_mcp_server
options:
'@type': type.googleapis.com/infra.gateway.middleware.llm.v1.contrib.MCPServerConfig
proxy:
name: example-mcp
upstreams:
- url: 'discovery://infra.example.example-mcp'
12ã€MCP市场与API接入 MCP 市场其实ž®±æ˜¯ä¸€ä¸ªå…¬å¸å†…部的资æºå…׃ínå’Œå作åã^å°ã€‚ç®€å•æ¥è¯ß_¼Œå®ƒå¯ä»¥çœ‹ä½œæ˜¯ä¼ä¸šå†…çš„ž®åž‹“App Store”åQŒä¸“é—¨ç”¨æ¥æä¾›å„¿UæœåŠ¡å’Œèµ„æºçš„æŽ¥å…¥å…¥å£ã€‚å¯ä»¥è®©ä¸šåŠ¡é€šè¿‡˜q™ä¸ªòq›_°è½ÀL¾èŽ·å–ã€æ•´åˆã€ä‹É用这些资æºï¼Œä½¿ä¸šåŠ¡å¯¹æŽ¥æ›´åŠ åœ°½Ž€å•ã€?/p>
用户å¯ä»¥æŠŠè‡ªå·Þqš„ MCP æœåŠ¡å¿«é€Ÿå‘布到市场上,òq¶ä¸”接入åˆ?MCP Gateway åŽå³å¯ä‹É用ã€?/p>
当å‰çš?MCP åè®®ä¸ä¸»è¦æœ‰ä¸¤ä¸ªç«¯ç‚¹åQ?/strong>
1åQ?/em> /sse åQšæ˜¯ä¸€ä¸?Events 长连接通知åè®®åQŒç”¨äºŽå®žæ—‰™€šçŸ¥èµ„æºä¿¡æ¯çš„å˜æ›ß_¼›2åQ?/em> /message åQšç”¨äº?JSONRPC 通信端点åQŒèƒ½å¤Ÿä»¥ JSONRPC 方弘q›è¡Œé€šä¿¡äº¤äº’ã€?/li>而我们在 MCP Gateway ä¸ï¼Œæˆ‘们在ä¼ä¸šå†…部将通过¾lŸä¸€çš„域å进行æä¾›ä¸šåŠ¡æŽ¥å…¥ï¼Œòq¶ä¸”˜q›è¡Œ½Ž¡ç†æ¯ä¸€ä¸?MCPæœåŠ¡çš„æŽ¥å£ï¼Œä¾‹å¦‚åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">https://mcp.example.com/logging-mcpã€?/p>
åŒæ—¶åœ?MCPæœåŠ¡ä¸ï¼Œéœ€è¦ä‹É用相åŒçš„æ ¹èµ\å¾?/logging-mcpåQŒå› 为在 MCP åè®®ä¸ï¼Œä¼šå…ˆ˜qžæŽ¥åˆ?/sse 端点åQŒå†˜q”回对应çš?/message 端点信æ¯åQŒæ‰€ä»¥è¯·æ±‚èµ\径需è¦ä¿æŒè·Ÿ¾|‘关一致ã€?/p>
13ã€æœ¬æ–‡å°¾l?/h1>AI ¾|‘关通过¾lŸä¸€æŽ¥å…¥ã€é‰´æƒã€é…é¢ç®¡ç?å’?模型调度支æŒåQŒäؓ大模型æä¾›äº†é«˜æ•ˆã€å®‰å…¨ã€å®šåˆ¶çš„˜qžæŽ¥èƒ½åŠ›ã€‚åŒæ—Óž¼Œæ”¯æŒäº?OpenAI åè®®ã€æ½Cø™¯æ¨¡æ¿ å’?MCP 市场½{‰åŠŸèƒ½ï¼Œ˜q›ä¸€æ¥æ‰©å±•了 AI 技术在ä¼ä¸šä¸çš„应用场景åQŒäØ“ä¸šåŠ¡æŽ¥å…¥å’Œèµ„æºæ•´åˆæä¾›äº†æžé«˜çš„便利性ã€?/p>
14ã€ç›¸å…Œ™µ„æ–?/h1> [1] Webç«¯å³æ—‰™€šè®¯æŠ€æœ¯ç›˜ç‚¹ï¼šçŸè½®è¯¢ã€Cometã€Websocketã€SSE
[2] SSE技术详解:一¿U全新的HTML5æœåŠ¡å™¨æŽ¨é€äº‹ä»¶æŠ€æœ?/a>
[3] ¾|‘页端IM通信技术快速入门:çŸè½®è¯¢ã€é•¿è½®è¯¢ã€SSEã€WebSocket
[4] æžæ‡‚çŽîC»£Webç«¯å³æ—‰™€šè®¯æŠ€æœ¯ä¸€æ–‡å°±å¤Ÿï¼šWebSocketã€socket.ioã€SSE
[5] 全民AI时代åQŒå¤§æ¨¡åž‹å®¢æˆ·ç«¯å’ŒæœåŠ¡ç«¯çš„å®žæ—¶é€šä¿¡åˆ°åº•ç”¨ä»€ä¹ˆå议?
åQˆæœ¬æ–‡å·²åŒæ¥å‘布于:http://www.52im.net/thread-4831-1-1.htmlåQ?/a>
]]>ž®çº¢ä¹¦APP的全新é¿`è’™NEXT端性能优化技术实è·?/title><link>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Mon, 19 May 2025 03:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html</guid><wfw:comment>http://www.aygfsteel.com/jb2011/comments/451622.html</wfw:comment><comments>http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jb2011/comments/commentRss/451622.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jb2011/services/trackbacks/451622.html</trackback:ping><description><![CDATA[<blockquote style="background-image: none; border-top: none; border-right: none; border-bottom: none; border-left-width: 3px; border-left-color: #e2dfdf; margin-right: 0px; margin-left: 0px; background-color: #eeeeee; width: 805.112px; color: #555555; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;"><p style="margin-top: 10px; margin-bottom: 10px;">本文æ¥è‡ªQConå…¨çƒè½¯äšgå¼€å‘大会王劲é¹çš„æŠ€æœ¯åˆ†äº«ï¼Œä¸‹æ–‡˜q›è¡Œäº†æŽ’版优化和修订ã€?/p></blockquote><h1>1ã€å¼•a€</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">性能和体验在 iOS / Android åŒç«¯åœºæ™¯ä¸‹å·²¾l是一个较为æˆç†Ÿçš„è¯é¢˜åQŒä½†éšç€é¸¿è’™ OS çš„å‘展,端侧开å‘è€…éœ€è¦æ›´å¤šçš„å…Ïx³¨å¤šç«¯åœºæ™¯çš„差异性ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>本次分äín的主题是ž®çº¢ä¹¦åœ¨é¸¿è’™òq›_°ä¸Šçš„工程实践åQŒä¸»è¦èšç„¦äºŽæ€§èƒ½ä¼˜åŒ–和探索ã€?/strong>åQ?strong><span style="color: #ff00ff;">* PPT讲稿原文下è²åQ?/span></strong>ã€?span style="color: #000080;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;"><span style="color: #000080;"><span style="color: #3366ff;">ž®çº¢ä¹¦é¿`è’™OS下的性能优化探烦与实è·?PPT)[附äšg下è²</span>]</span></a></span>》)</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">先介¾l一下自å·Þqš„背景。之å‰ä¸€ç›´ä»Žäº‹å¤§å‰ç«¯é¢†åŸŸçš„工作,主è¦ä¸“注于跨端和容器化方案。也曾手写过一个跨端框æžÓž¼Œå䨓 DoricåQŒå®ƒå¯ä»¥å¯ÒŽ ‡ React Nativeã€Vue Native å’?Flutter ½{‰ã€‚Doric 框架在è½åœ°æ—¶è¡¨çŽ°è‰¯å¥½åQŒè¿˜æ”¯æŒäº†ä¸€äº›è‡ªç ”çš„ 3D 引擎æ–ÒŽ¡ˆã€‚除æ¤ä¹‹å¤–ï¼Œæˆ‘è¿˜æœ‰æ’æ”‘Ö™¨å†…æ ¸ç ”å‘¾l验åQŒä»¥åŠå¤§å‰ç«¯å¸¸è§„ä½“ç³»å»ø™®¾å’?CI/CD ‹¹æ°´¾U¿çš„工程¾l验。未æ¥ï¼Œæˆ‘å°†æŒç®‹å…Ïx³¨å¤§å‰ç«¯çš„æ¼”è¿›åQŒå°¤å…¶æ˜¯é¸¿è’™˜q™æ ·çš„多端和跨端òq›_°ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">ä»?2023 òq´å¼€å§‹ï¼Œé¸¿è’™çš„ä¼˜åŠ¿æ„ˆå‘æ˜Žæ˜¾ï¼Œå·²ç»æˆäØ“å¯ä¸Ž iOSã€å®‰å“媲¾ŸŽçš„½W¬ä¸‰å¤§ç§»åЍæ“作系¾lŸã€‚从一些抖韌™§†é¢‘ä¸ä¹Ÿå¯ä»¥çœ‹å‡ºï¼Œé¸¿è’™åœ¨æµç•…性方é¢ç”šè‡›_œ¨æŸäº›å±‚é¢ä¸Šè¶…˜q‡äº† iOSã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>今天的分享内容分为四个部分:</strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1åQ?/em></strong>ä»‹ç»æ•´ä¸ªåŽ†ç¨‹å’ŒèƒŒæ™¯ï¼›</li><li style="list-style: inherit;"><strong><em>2åQ?/em></strong>介ç»é¸¿è’™ OS 的相兌™ƒ½åŠ›å’Œž®çº¢ä¹¦åœ¨è¯¥åã^åîC¸Šçš„优化实践;</li><li style="list-style: inherit;"><strong><em>3åQ?/em></strong>通过鸿蒙 OS æä¾›çš„æ€§èƒ½éªŒè¯å·¥å…·åQŒå±•½Cºå°¾U¢ä¹¦åœ¨é¿`è’™åã^åîC¸Šçš„æ€§èƒ½ä¼˜åŒ–éªŒè¯æ–ÒŽ³•ã€ä¼˜åŒ–åŽçš„æ€§èƒ½æå‡ä»¥åŠå…·ä½“的收益和¾l“æžœåQ?/li><li style="list-style: inherit;"><strong><em>4åQ?/em></strong>æ€È»“和展望ã€?/li></ul><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095629609-1968841729.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"> </div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"> </div><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><p style="margin-top: 10px; margin-bottom: 10px;"><strong>技术交‹¹ï¼š</strong></p><div><div><div><p style="margin-top: 10px; margin-bottom: 10px;">- ¿UÕdŠ¨ç«¯IMå¼€å‘å…¥é—¨æ–‡ç« ï¼šã€?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">新手入门一½‹‡å°±å¤Ÿï¼šä»Žé›¶å¼€å‘移动端IM</a>ã€?/p><p style="margin-top: 10px; margin-bottom: 10px;">- å¼€æºIM框架æºç åQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">https://github.com/JackJiang2011/MobileIMSDK</a>åQ?a rel="noopener nofollow" target="_blank" style="color: #1d58d1; text-decoration-line: none;">备用地å€ç‚ÒŽ¤</a>åQ?/p></div></div></div><p style="margin-top: 10px; margin-bottom: 10px;"><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">åQˆæœ¬æ–‡å·²åŒæ¥å‘布于:http://www.52im.net/thread-4821-1-1.htmlåQ?/a></p></div><h1>2ã€å†…容分享和整ç†</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">分äín者:王劲é¹ï¼Œå†…å®¹å®¡æ ¡å’Œç¼–è¾‘ï¼šKittyã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095636084-475085880.jpg" alt="" style="border: 0px; max-width: 100%; height: auto !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> <strong>王劲é¹ï¼š</strong>ž®çº¢ä¹¦é¿`蒙工½E‹å¸ˆã€‚ç›®å‰ä¸»è¦è´Ÿè´£å°¾U¢ä¹¦é¸¿è’™ç‰ˆçš„ç ”å‘和工½E‹å¾è®¾ï¼Œæ›¾ä»Žäº‹è¿‡å¤§å‰ç«¯æž¶æž„设计ã€ç ”呿•ˆèƒ½ç‰æ–¹å‘的工作,在终端架构演˜q›ã€æ€§èƒ½ä¼˜åŒ–以åŠè·¨ç«¯å®¹å™¨å’ŒåЍæ€åŒ–½{‰æ–¹é¢å…·å¤‡é•¿æœŸå®žè·µåŠæ·±åŽš¾l验åQŒæŒ¾l关注大å‰ç«¯æŠ€æœ¯ä½“¾p»ï¼Œé¸¿è’™ä»¥åŠå¤šç«¯çš„æ¼”˜q›ã€?/p></div><h1>3ã€ç‰ˆæœ¬åކ½E‹å’Œå¼€å‘背æ™?/h1><h3>3.1 ž®çº¢ä¹¦è„P代历½E?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ä»?2023 òq´å¹´ä¸å¼€å§‹ï¼Œé¸¿è’™çš?#8220;åƒå¸†è®¡åˆ’”æ£å¼å¯åЍåQŒåƈ很快å‡çñ”ä¸?#8220;鸉K£žè®¡åˆ’”ã€?/strong>ž®çº¢ä¹¦ä½œä¸?7 家头部åˆä½œå•†ä¹‹ä¸€åQŒçŽ‡å…ˆæ”¯æŒäº†é¸¿è’™åQŒåƈäº?2023 òq?11 æœˆä¸æ—¬ä¸Š¾U¿äº†ä¸€ä¸ªåŸº¼‹€ç‰ˆçš„ beta 版本 APP。这个版本主è¦åŒ…å«ç¬”è®°æµè§ˆå’Œè§†é¢‘½W”è®°‹¹è§ˆä¸¤å¤§åŠŸèƒ½åQŒä»¥åŠä¸€äº›ç®€å•的个äh讄¡½®ã€‚当æ—Óž¼Œž®çº¢ä¹¦çš„动作éžå¸¸˜q…速,å¯ä»¥è¯´æ˜¯å¤´éƒ¨åº”用厂商ä¸å¯¹åŽäØ“æ”¯æŒæœ€ä¸ºç§¯æžçš„å“牌之一ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在整个é¿`飞计划ä¸åQŒæˆ‘ä»¬è§„åˆ’äº†ä¸‰ä¸ªæ ¸å¿ƒé‡Œç¨‹¼„‘:</strong>除了 2023 òq?11 月的 beta 版本外,˜q˜åŒ…æ‹?2024 òq?6 月的 HDC 版本å’?2024 òq?9 月的商用版本。HDC ç‰ˆæœ¬ä¸»è¦æ˜¯é’ˆå¯¹åŽä¸ºæ£å¼å®£å‘é¿`è’?3åQˆHarmonyOS NextåQ‰å¼€å‘者测试的情况。在 HDC 版本ä¸ï¼Œæˆ‘们上线了许多尾U¢ä¹¦ç‰ÒŽœ‰çš„å˜é‡åŠŸèƒ½ï¼ŒåŒ…æ‹¬è§†é¢‘æ‹æ‘„ã€å›¾æ–‡æ‹æ‘„以åŠå¤šè®‘Ö¤‡å匽{‰åˆ›æ–°ç‰¹æ€§ã€‚而到äº?2024 òq?9 月的商用版本交付æ—Óž¼Œž®çº¢ä¹¦çš„æ ¸å¿ƒåŠŸèƒ½å·²ç»åŸºæœ¬ä¸Žä¸»ç«¯å¯¹é½ã€‚考虑到é¿`蒙的开å‘周期仅有一òqß_¼Œž®çº¢ä¹¦çš„鸿蒙 APP 在这一òq´ä¸è¦å¯¹é½å¼€å‘了å年甚至åå‡ òq´çš„安å“å’?iOS 版本åQŒéš¾åº¦å’ŒåŽ‹åŠ›éƒ½éžå¸¸å·¨å¤§ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">åˆ?2024 òq?9 月,除了寚w½åŒç«¯çš„æ‰€æœ‰åŠŸèƒ½å¤–åQŒæˆ‘们还开å‘了许多其他功能åQŒåŒ…括åŽä¸ºæ”¯æŒçš„创新ç‰ÒŽ€§ï¼Œä¾‹å¦‚æ™ø™ƒ½æ‹–拽——用户å¯ä»¥ž®†å›¾ç‰‡æ‹–拽到ä¸è{站或ž®è‰º½{‰åœºæ™¯ã€‚æ¤å¤–,商用版本˜q˜æ”¯æŒäº†ç”¨æˆ·å‘¼å£°è¾ƒé«˜çš?HDR æˆ?Moonlight Photo æ‹æ‘„能力ã€?/p><h3>3.2 ¾U¯è¡€é¸¿è’™ä¸Žå®‰å“的区别</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">æˆ‘ä»Žå‡ ä¸ª¾l´åº¦æ¥å¯¹æ¯”一下纯血鸿蒙和安å?OS 的主è¦åŒºåˆ«ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>å†…æ ¸æž¶æž„¾U¯è¡€é¸¿è’™çš„æœ¬è´¨æ˜¯å¾®å†…æ ¸ï¼Œè€Œå®‰å“æ˜¯åŸÞZºŽ Linux å®å†…æ ¸ã€?/strong>å¾®å†…æ ¸åªæä¾›åŸºç¡€çš„å†…å˜å’Œæ–‡äšg½Ž¡ç†èƒ½åŠ›åQŒé©±åŠ¨å’Œå…¶ä»–¾pÈ»Ÿèƒ½åŠ›éƒ½åœ¨ OS ä¹‹å¤–ã€‚è¿™æ ·åšçš„好处是¾pÈ»Ÿ½E›_®šæ€§æžé«˜ï¼Œå³ä‹É应用崩溃åQŒä¹Ÿä¸ä¼šå¯ÆD‡´æ•´ä¸ª¾pÈ»Ÿå´©æºƒåQˆsystem crashåQ‰ã€‚而在 Linux å®å†…æ æ€¸åQŒåº”用的ä¸å½“è¡ŒäØ“å¯èƒ½ä¼šç›´æŽ¥å¯¼è‡´ç³»¾lŸå´©æºƒã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>多设备适é…é¸¿è’™ç›®å‰æ”¯æŒå¤šç§è®‘Ö¤‡¾cÕdž‹åQ?/strong>包括 Mate 60 Pro ˜q™æ ·çš„ç›´æ¿æ‰‹æœºã€Mate X5 或éžå‡¡å¤§å¸?XT ˜q™æ ·çš„åŒæŠ˜å å’Œä¸‰æŠ˜å æ‰‹æœºã€åã^æ¿ç”µè„‘ã€èžR机,甚至åŽäØ“æ£åœ¨ç ”å‘çš„é¿`è’?PC。é¿`蒙真æ£å®žçŽîCº†¾cÖM¼¼ iOS 的多端整åˆèƒ½åŠ›ï¼Œé€šè¿‡ä¸€å¥—ä»£ç 实现多端部¾|ŒÓ€‚其工程体系和架构支æŒå• HAPåQˆHarmony Ability PackageåQ‰å¤š HSPåQˆHarmony Service PackageåQ‰æ¨¡å—,指ä×o集适é…äº?ARM64 ½{‰å¤š¿U架构,开å‘者åªéœ€æ ÒŽ®è®‘Ö¤‡ž®ºå¯¸é€‚é… UI 展示å›_¯ã€‚例如,åœ?2024 òq?9 æœ?çš„åŽä¸ºå…¨åœºæ™¯è®‘Ö¤‡å‘布会上åQŒä½™æ‰¿ä¸œå±•示了尾U¢ä¹¦åœ¨ä»Žç›´æ¿æœºåˆ°åŒæŠ˜å ã€ä¸‰æŠ˜å 讑֤‡ä¸Šçš„适é…能力åQŒå®Œå…¨å®žçŽîCº†å“应å¼ç¼–½E‹ï¼Œä¸åŒè®‘Ö¤‡å½¢æ€ä¸‹æœ‰ä¸åŒçš„‹¹è§ˆä½“éªŒã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>å¼€å‘工具和¾~–程模型鸿蒙的开å‘工具和¾~–程模型与安å“差异较大ã€?/strong>鸿蒙更类ä¼égºŽ Flutter 的嵌套型容器布局åQŒè€Œä¸æ˜¯å®‰å“é‚£¿Ué¢å‘å¯¹è±¡çš„å¼€å‘æ–¹å¼ã€‚在è¯è¨€å±‚é¢åQŒé¿`蒙完全å°è£…了底层逻辑åQŒé‡‡ç”¨ç±»ä¼¼å‰ç«?Flux å•呿•°æ®‹¹æ¨¡å¼ï¼Œé€šè¿‡æ•°æ®å˜æ›´é©±åЍ UI åˆäh–°ã€‚è¿™¿U模å¼ç±»ä¼égºŽå‰ç«¯ Redux æˆ?MobX 框架ä¸çš„ state ½Ž¡ç† ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ä»?2024 òq?10 æœ?8 日公‹¹‹å¼€å§‹ï¼Œé¸¿è’™çš„åº”ç”¨ç”Ÿæ€æ£åœ¨é€æ¸¾Jè£ã€?/strong>ä¸è¿‡åQŒç›®å‰åƒå¾®ä¿¡˜q™æ ·çš„应用还处于抢先体验阶段。相比之下,安å“的生æ€å·²¾l相å¯ÒŽˆç†Ÿã€‚é¿`蒙的最¾lˆç›®æ ‡æ˜¯æ‰“é€ å…¨åœºæ™¯æ™ø™ƒ½è®‘Ö¤‡ç”Ÿæ€ï¼Œæ¶ëŠ›–所有终端设备,以åŠåŸÞZºŽ OpenHarmony å†…æ ¸å¼€å‘的物蔾|‘终端。它˜q˜æ”¯æŒå¤š¿U芯片体¾p»ï¼Œä¾‹å¦‚瑞芯å¾?RK3568 ½{‰ã€?/p><h3>3.3 ž®çº¢ä¹¦é¿`蒙应用架构层¾U?/h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">ž®çº¢ä¹¦ç»˜q‡ä¸€òq´çš„˜q代åQŒå…¶æ•´ä½“应用架构已ç»åŸºæœ¬æˆç†Ÿã€‚ç›®å‰ï¼Œæ•´ä½“代ç 釿ޥ˜q?200 万行åQŒè¾¾åˆîCº†ä¸€ä¸ªè¾ƒé«˜çš„夿‚度。在一般æˆç†Ÿçš„ APP æž¶æž„ä¸ï¼Œé€šå¸¸ä¼šåŒ…å«ä¸€äº›åŸº¼‹€åº•层能力åQŒä¾‹å¦‚网¾lœã€ç£ç›˜å˜å‚¨ã€åŸ‹ç‚¹ä½“¾p…R€APMåQˆåº”用性能½Ž¡ç†åQ‰ç³»¾lŸï¼Œä»¥åŠä¸€äº›é€šç”¨¾l„äšg和能力。对于é¿`è’™åã^åŽÍ¼Œž®çº¢ä¹¦è¿˜å…·å¤‡ä¸€äº›ç‰¹ŒDŠçš„公共通用能力ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>我们开å‘了一ä¸?#8220;一多框æž?#8221;</strong>åQŒè¿™æ˜¯ä¸€ä¸ªæ”¯æŒä¸€å¥—代ç 多端部¾|²çš„具体框架体系。通过˜q™ä¸ªæ¡†æž¶åQŒæˆ‘们实çŽîCº†å¤šè®¾å¤‡çš„æ–ç‚¹æŽ§åˆ¶åŠŸèƒ½ã€‚ç”¨æˆ·å¯ä»¥æ ¹æ®è®¾å¤‡çš„ž®ºå¯¸å’Œç±»åž‹è¿›è¡Œé€‚é…åQŒå› 为åŽä¸ø™®¾å¤‡æ”¯æŒå¤šç«¯æŠ•å±ã€‚例如,用户å¯ä»¥åœ¨æ‰‹æœÞZ¸Š‹¹è§ˆž®çº¢ä¹¦ï¼Œç„¶åŽž®†å†…å®ÒŽŠ•å±åˆ°è½¦æœºä¸Šã€‚比如用戯‚´ä¹îCº†ä¸€è¾†é—®ç•Œæ±½è½¦ï¼Œå¯ä»¥åœ¨èžR内通过车机¾l§ç®‹‹¹è§ˆæ‰‹æœºä¸Šçš„ž®çº¢ä¹¦å†…å®¹ï¼Œ˜q™ç§åœºæ™¯åœ¨é©¾é©¶æ—¶ž®¤å…¶æœ‰ç”¨ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">除了底层框架åQŒå¯¹äºŽä¸Šå±‚业务,<strong>ž®çº¢ä¹¦è¿˜æœ‰ä¸€å¥—è‡ªç ”çš„¾l„äšg库方æ¡?/strong>åQŒè¿™å¥—组件库承è²äº†ä¸Šå±‚业务的多ç§åŠŸèƒ½åQŒåŒ…括图文笔记ã€è§†é¢‘笔记æµè§ˆï¼Œä»¥åŠä¸€äº?Hybrid 容器能力。尾U¢ä¹¦æœ¬è´¨ä¸Šåœ¨è·¨ç«¯å¼€å‘ä¸ä»ç„¶ä½¿ç”¨äº?React NativeåQˆRNåQ‰å’Œ¾c?Web 技术。RN 引擎由åŽä¸ºå†…部åˆä½œæä¾›ï¼Œé‡‡ç”¨äº†è‡ªç ”çš„ ohos æ–ÒŽ¡ˆåQŒç”¨äºŽè§£å†?React Native çš?bundle å’?JS åŠ è²ä»¥åŠæ¸²æŸ“问题。æ¤å¤–,˜q˜åŒ…括äñ”å“定制层åQŒè¿™é‡Œæ¶µç›–了所有相关的讑֤‡é€‚é…内容ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095644107-55583946.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong> 3.4 性能优化与实è·?/strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">ç›®å‰åQŒå®‰å“å’Œ iOS 在性能优化斚w¢å·²ç»ç›¸å½“æˆç†ŸåQŒåŒ…æ‹¬å¦‚ä½•åˆ†æžæ€§èƒ½çƒç‚¹é—®é¢˜ã€æœ‰å“ªäº›å·¥å…·ä»¥åŠæœ€ä½›_®žè·ëŠ‰ã€‚ç„¶è€Œï¼Œå¯¹äºŽé¸¿è’™æ¥è¯´åQŒå®ƒæ˜¯ä¸€ä¸ªå…¨æ–°çš„¾pÈ»Ÿã€‚ç›´åˆ?2024 òq´å¹´ä¸ï¼Œé¸¿è’™çš„稳定性和‹¹ç•…性都˜q˜å˜åœ¨ä¸€äº›é—®é¢˜ã€‚这里é‡ç‚¹è®²˜q°å°¾U¢ä¹¦åœ?2024 òq´ä¸ŽåŽäؓ一赯‚¿›è¡Œäº†å“ªäº›å®žè·µåQŒä»¥æå‡åº”用的性能和用户体验ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">æˆ‘ä»¬å®šä¹‰äº†ä¸€ä¸ªæ€§èƒ½æŒ‡æ ‡åœºæ™¯ã€‚è¿™ä¸ªæŒ‡æ ‡ä½“¾pÀL˜¯ž®çº¢ä¹¦ä¸ŽåŽäØ“å…±åŒæŽ¢è®¨çš„ç»“æžœï¼Œå› äØ“åŽäؓ有一个性能工厂åQŒå®ƒå¯ÒŽ¯ä¸ªåº”ç”¨çš„è¯„çñ”都有一ä¸?S æ ‡æ ‡å‡†ã€‚å°¾U¢ä¹¦ä¸ŽåŽä¸ÞZ¸€èµïL¡®å®šäº†é’ˆå¯¹ž®çº¢ä¹¦åœºæ™¯éœ€è¦è§‚‹¹‹çš„å…·ä½“æŒ‡æ ‡ã€‚æ€§èƒ½ä¼˜åŒ–çš„æ ¸å¿ƒæ˜¯æ…¢å‡½æ•°æŒ‡æ ‡ï¼Œå®ƒä¸»è¦åŒ…å«ä¸¤éƒ¨åˆ†åQšè¿‡½E‹æ—¶é•¿å’Œåº”用体验的æµç•…性ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>˜q‡ç¨‹æ—‰™•¿ä¸»è¦åŒ…å«ä»¥ä¸‹ä¸‰ç‚¹åQ?/strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1åQ?/em></strong><span style="color: #800000;">冷å¯åŠ¨æ—¶é•¿ï¼š</span>˜q™æ˜¯ç”¨æˆ·æœ€å…›_¿ƒçš„æŒ‡æ ‡ä¹‹ä¸€åQŒå³ä»Žç‚¹å‡Õdº”ç”¨å›¾æ ‡åˆ°åº”ç”¨å®ŒæˆåŠ¨ç”»òq¶å±•½Cºç¬¬ä¸€å¸§çš„æ—‰™—´ã€‚å¯¹äºŽå¤šæ•°åº”ç”¨ï¼Œé¦–é¡µé€šå¸¸æœ‰ç¼“å˜æœºåˆ¶ã€‚例如,ž®çº¢ä¹¦ä¼š¾~“å˜ç”¨æˆ·ä¸Šæ¬¡åˆäh–°çš„笔讎ͼŒæ·˜å®ä¼šç¼“å˜ç”¨æˆ·ä¸Š‹Æ¡æµè§ˆçš„商å“内容åQ?/li><li style="list-style: inherit;"><strong><em>2åQ?/em></strong><span style="color: #800000;">åœºæ™¯å®Œæˆæ—‰™•¿åQ?/span>æŒ‡å®ŒæˆæŸä¸ªç‰¹å®šåœºæ™¯æ‰€éœ€çš„æ—¶é—ß_¼›</li><li style="list-style: inherit;"><strong><em>3åQ?/em></strong><span style="color: #800000;">应用å“应旉™•¿åQ?/span>指用æˆäh“作界é¢åŽåQŒç•Œé¢çœŸæ£å‘生å˜åŒ–的旉™—´åQŒå³å“应时åšgã€?/li></ul><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">‹¹ç•…性方é¢ï¼Œæœ€åŸºç¡€çš„è§‚‹¹‹æŒ‡æ ‡æ˜¯òq›_‡ FPSåQˆå“á率)åQŒåŒ…æ‹¬ä¸¢å¸§æ•°ã€æœ€å¤§è¿ž¾l丢帧数ã€ä¸¢å¸§å¡™å¿æ¬¡æ•îC»¥åŠå¡™å¿çއã€?strong>å¡é¡¿çއå¯ä»¥é€šè¿‡é‡åŒ–计算得出åQ?/strong>当一个场景ä¸å‡ºçް䏢å“áæ—Óž¼Œä¸¢å“á的时长与场景æ€ÀL—¶é•¿çš„æ¯”值å³ä¸ºå¡™å¿çއåQŒå®ƒæ˜¯ä¸€ä¸ªå°äº?1 的百分比数倹{€?/p><h3>3.5 OS 能力 & 优化实践</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">首先åQŒé’ˆå¯?IO 场景åQŒæˆ‘们进行了相应的优化ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>鸿蒙 OS 的系¾lŸèƒ½åЛ䏻è¦åˆ†ä¸ÞZ»¥ä¸‹ä¸‰ä¸ªæ–¹é¢ï¼š</strong></p><ul style="margin-left: 30px; padding-left: 0px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="list-style: inherit;"><strong><em>1åQ?/em></strong>òq¶è¡ŒåŒ–能力é¿`è’?OS æä¾›äº†ä¸¤¿UåÆˆè¡ŒåŒ–èƒ½åŠ›åQšWorker å’?TaskPool。Worker ¾cÖM¼¼äºŽä¼ ¾lŸçš„¾U¿ç¨‹æ¨¡åž‹åQŒæ¯ä¸?Worker 都有自己的内å˜ç©ºé—´å’Œæ‰§è¡Œå•å…ƒåQŒæ”¯æŒé€šè¿‡æ¶ˆæ¯åQˆmessageåQ‰è¿›è¡Œé€šä¿¡ã€‚TaskPool 则类ä¼égºŽå程或线½E‹æ± åQŒèƒ½å¤ŸåЍæ€ç®¡ç†çº¿½E‹æ•°é‡ï¼Œæ”¯æŒæ ‡è®°ä¸?@concurrent 的函数直接在ä»ÕdŠ¡æ± ä¸è°ƒåº¦å’Œè¿è¡Œã€‚è¿™ä¸¤ç§æœºåˆ¶éƒ½æ”¯æŒçº¿½E‹é—´éš”离åQŒå†…å˜ä¸å…׃ínåQ?/li><li style="list-style: inherit;"><strong><em>2åQ?/em></strong>多线½E‹é€šä¿¡å’Œæ•°æ®ä¼ 输在多线½E‹é€šä¿¡æ–šw¢åQŒé¿`è’?OS 支æŒåºåˆ—化数æ®ä¼ 输和åŸÞZºŽæ¶ˆæ¯åQˆmessageåQ‰çš„通信机制。æ¤å¤–,˜q˜å¼•入了事äšgå‘射器(EmitteråQ‰ç”¨äºŽç³»¾lŸäº‹ä»¶çš„å‘布和订阅。这¿U机制å…许线½E‹é—´é€šè¿‡æ¶ˆæ¯ä¼ 递æ¥å®žçް夿‚的交互逻辑åQ?/li><li style="list-style: inherit;"><strong><em>3åQ?/em></strong>åŒæ¥è½¬å¼‚æ¥æœºåˆ‰™¿`è’?OS 支æŒåŸÞZºŽ Promise 的异æ¥ç¼–½E‹æ¨¡åž‹ï¼ŒåŒ…括 async å’?await è¯æ³•åQŒä»¥å?then å’?catch æ–ÒŽ³•。这¿U机制能够有效æå‡åº”用的å“应性和用户体验ã€?/li></ul><h1>4ã€åƈ行化能力</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">åœ¨åÆˆè¡ŒåŒ–èƒ½åŠ›æ–šw¢åQŒé¿`è’?OS æä¾›äº†ä¸¤å¥—基¼‹€å®žçŽ°æ–¹å¼ã€‚å¼€å‘者å¯ä»¥é€šè¿‡ RTSåQˆè¿è¡Œæ—¶¾pÈ»ŸåQ‰å®žçŽ°åÆˆè¡ŒåŒ–åQŒä¹Ÿå¯ä»¥é€šè¿‡åº•层库(å¦?C++ æ ‡å‡†åº“ä¸çš„)实现。丘q‡ï¼Œå¦‚果完全ä¾èµ–底层库,å¯èƒ½ä¼šå¯¼è‡´å¼€å‘效率下é™ã€‚äØ“äº†æ»¡‘³ä¸šåŠ¡éœ€æ±‚ï¼Œé¸¿è’™ OS 在年åˆå¼•入了 Worker å’?TaskPool 能力。Worker ¾cÖM¼¼äºŽä¼ ¾lŸçš„¾U¿ç¨‹æ¨¡åž‹åQŒæ¯ä¸?Worker 都有独立的内å˜ç©ºé—´å’Œæ‰§è¡Œå•å…ƒåQŒæ”¯æŒé€šè¿‡æ¶ˆæ¯˜q›è¡Œé€šä¿¡ã€‚消æ¯å¯ä»¥åŒ…å«å¯åºåˆ—化的数æ®åQŒä¹Ÿå¯ä»¥é€šè¿‡æŒ‡é’ˆç›´æŽ¥˜q移数æ®ã€‚TaskPool 则类ä¼égºŽ¾U¿ç¨‹æ± ,能够动æ€ç®¡ç†çº¿½E‹æ•°é‡ï¼Œæ”¯æŒæ ‡è®°ä¸?@concurrent 的函数直接在ä»ÕdŠ¡æ± ä¸è°ƒåº¦å’Œè¿è¡Œã€‚与安å“òq›_°çš„线½E‹æ± ä¸åŒåQŒé¿`è’?OS çš?TaskPool ä¼šæ ¹æ®ç¡¬ä»¶æ¡ä»¶å’Œä»ÕdŠ¡è´Ÿè²åЍæ€è°ƒæ•´çº¿½E‹æ•°é‡ã€‚è¿™¿U机刉™¿å…了安å“òq›_°ä¸å› ¾U¿ç¨‹æ± æ•°é‡è¿‡å¤šè€Œå¯¼è‡´çš„¾pÈ»Ÿèµ„æºæ¶ˆè€—问题ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>æŽ¥ä¸‹æ¥æˆ‘们对比é¿`è’?OS çš?Worker òq¶è¡ŒåŒ–能力和安å“端的相关ç‰ÒŽ€§ã€?/strong>从多个维度æ¥çœ‹ï¼ŒWorker æœ¬è´¨ä¸Šä¸æŽ¨èæ‰‹åŠ¨åˆ›å¾åQŒè€Œæ˜¯é€šè¿‡¾pÈ»Ÿé…ç½® build-provider.json ¾l‘定 ETS æ–‡äšgæ¥å®žçŽ°åˆ›å»ºã€‚è¿™ä¸€ç‚¹ä¸Žå®‰å“ç«¯åÆˆæ— æ˜Žæ˜‘Ö·®å¼‚,安å“端å¯ä»¥é€šè¿‡ THREAD ½{‰æ–¹å¼å¯åŠ¨çº¿½E‹ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在é¿`è’?OS 5.0 以下版本åQˆå¦‚ 4.2 版本åQ‰ä¸åQŒä¸»è¦è¿è¡Œçš„ä»ç„¶æ˜¯å®‰å“ç³»¾lŸã€‚è¿™¿U情况下åQŒå®‰å“线½E‹æ•°é‡å˜åœ¨ä¸Šé™ï¼Œ˜q™å¯¹åº”用开å‘者æ¥è¯´æ˜¯ä¸€ä¸ªæŒ‘战。如æž?SDK 集战q‡å¤šåQŒçº¿½E‹æ•°å¯èƒ½‘…æ ‡åQŒè¿›è€Œå¯¼è‡´åº”用被¾pÈ»Ÿå¼ºåˆ¶¾lˆæ¢åQŒæˆ–出现业务场景异常崩溃½{‰ç¨³å®šæ€§é—®é¢˜ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>æ•°æ®ä¼ 输斚w¢åQ?/strong>鸿蒙 OS ä¸ÞZº†ä¼˜åŒ– Worker 的性能和负载,å¯?Worker 的数é‡å’Œå•个 Worker çš„ä¼ è¾“ä¸Šé™è¿›è¡Œäº†é™åˆ¶ã€‚é¿`è’?Worker çš„å•ä¸ªä¼ è¾“ä¸Šé™ç±»ä¼égºŽå®‰å“ä¸çš„ Binder 机制åQŒä¹Ÿå˜åœ¨¾cÖM¼¼çš„ä¼ è¾“é™åˆ¶ã€‚丘q‡ï¼Œå®‰å“¾U¿ç¨‹é€šå¸¸æ²¡æœ‰ä¸¥æ ¼é™åˆ¶åQŒå› 为线½E‹æœ¬è´¨ä¸Šæ˜¯ä¸€ä¸ªå†…å˜æ‹·è´è¿‡½E‹ï¼Œé™¤éžå¼€å‘者通过指针½{‰æ–¹å¼è‡ªå®šä¹‰¾U¿ç¨‹é—´æ•°æ®ä¼ 输ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>åœ¨ä¼ è¾“æ ¼å¼ä¸ŠåQ?/strong>鸿蒙 OS 支æŒé€šè¿‡ Sendable 接壘q›è¡Œæ•°æ®ä¼ 输。Sendable 是一¿U注解方å¼å®šä¹‰çš„æ•°æ®¾l“æž„åQŒå…·æœ‰ä¼ 染性,å›_¦‚æžœä¸€ä¸ªç±»è¢«æ ‡è®îCØ“ SendableåQŒå…¶å…Œ™”属性也必须æ˜?Sendable ¾cÕdž‹ã€‚é¿`è’?OS 支æŒåŸºç¡€æ•°æ®¾cÕdž‹åQˆå¦‚ numberã€stringåQ‰å’Œé›†åˆ¾cÕdž‹ä½œäØ“ Sendable ä¼ è¾“çš„å†…å®V€‚对于跨模å—调用åQŒé¿`è’?OS ä¸å…è®?Worker è·?HAP 或跨 HSP 调用。相比之下,安å“应用通常˜q行在一个或多个 Dex æ–‡äšgä¸ï¼Œå…许è·?Dex 或跨模å—的线½E‹é—´è°ƒç”¨ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>TaskPool ¾cÖM¼¼äºŽåŒç«¯çš„å程概念åQŒæ˜¯ä¸€¿Uè½»é‡çñ”¾U¿ç¨‹åQŒä»…å˜å‚¨å‡½æ•°ã€?/strong>ä¸è¿‡åQŒTaskPool 与å½E‹æœ‰æ‰€ä¸åŒåQŒå®ƒç‹¬ç«‹äºŽä“Q务维度,且ä“Q务执行时长有é™åˆ¶åQˆè¶…˜q?3 分钟会被¾pÈ»Ÿè‡ªåŠ¨å›žæ”¶åQ‰ã€‚安å“åã^å°å¯ä»¥é€šè¿‡ ASM æ’æ¡©æŠ€æœ¯å¯¹¾U¿ç¨‹çš„创建和执行˜q›è¡Œç›‘控和优化,但轻é‡çñ”¾U¿ç¨‹æˆ–å½E‹çš„实现通常ä¾èµ–于线½E‹æ± 或å½E‹æœºåˆ¶ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">TaskPool ä¸çš„ä»ÕdŠ¡é»˜è®¤æ”¯æŒæ•°æ®è½¬ç§»åQˆtransferåQ‰ï¼Œä¸æ”¯æŒæ‹·è´ã€‚æ¤å¤–,TaskGroup 䏿”¯æŒ?SDK åˆå§‹åŒ–åŒ…çš„åŠ è½½ã€‚æŸäº›åŒå¦ä¹ 惯在异楾U¿ç¨‹ä¸è§¦å?SDK 的行为,在é¿`è’?OS 上å¯èƒ½ä¼šå›?TaskPool 生命周期¾l“æŸè€Œå¯¼è‡´å˜é‡è¢«é‡Šæ”¾ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>关于òq¶è¡ŒåŒ–æ•°æ®ä¼ 输的 Sendable 概念åQ?/strong>Sendable 通过¾pÈ»Ÿæä¾›çš?SharedHeapåQˆå…±äº«å †åQ‰å®žçŽîC¼ è¾“ã€‚å…±äº«å †ä¸Žæœ¬åœ°å †åQˆlocal HeapåQ‰çš„区别在于åQŒå…±äº«å †æ”¯æŒ Sendable 化数æ®çš„ä¼ è¾“åQŒè€Œæœ¬åœ°å †åˆ™éœ€è¦åºåˆ—åŒ–ã€‚å…±äº«å †çš„ç®¡ç†å’ŒæŽ§åˆ¶è€—费了åŽä¸ÞZ¸“家大釿—¶é—´å’Œ¾_‘ÖŠ›åQŒå…¶ä¸è¿˜æ¶‰åŠå¤æ‚的异æ¥é”åQˆasync lockåQ‰æœºåˆ¶ã€‚在 RTS òq¶å‘实例期间åQˆåŒ…æ‹?Workerã€TaskPool ½{‰ï¼‰åQŒæ•°æ®å¯ä»¥é€šè¿‡ Sendable ä¼ é€’ï¼Œä½?Worker 需è¦ä‹É用å•独的 API。TaskPool 则完全支æŒ?Sendable çš„ç›´æŽ¥ä¼ è¾“ã€‚è¿™¿U异æ¥é”机制å…许åœ?TaskPool æˆ?Worker ä¸é”定其他ä“Q务ä¸çš„æŸäº›å‡½æ•ŽÍ¼Œå®žçް¾U¿ç¨‹é—´çš„åŒæ¥åQŒç±»ä¼égºŽå®‰å“ä¸çš„ synchronized æˆ–å…¶ä»–é”æœºåˆ¶ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095652084-1773569795.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>5ã€å°¾U¢ä¹¦å…¸åž‹òq¶è¡ŒåŒ–场æ™?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ž®çº¢ä¹¦åœ¨ä¸€äº›å…¸åž‹åŒ–场景ä¸å·²¾l实çŽîCº†òq¶è¡ŒåŒ–处ç†ã€?/strong>例如åQŒç½‘¾lœè¯·æ±‚是一个典型的耗时æ“作åQŒå› 䏸™¯·æ±‚过½E‹ä¸æ¶‰åŠéªŒç¾å’Œå®‰å…¨èƒ½åŠ›çš„å¤„ç†åQŒè¿™äº›æ“作如果在ä¸Èº¿½E‹ä¸åŒæ¥å®ŒæˆåQŒå¯èƒ½ä¼šå¯ÆD‡´åº”用掉å“á。当用户滑动æ—Óž¼ŒæŽ‰å“á现象会éžå¸¸æ˜Žæ˜¾ï¼Œ˜q™é€šå¸¸æ˜¯ç”±äºŽå¤§é‡è®¡½Ž—引èµïLš„ã€‚äØ“äº†è§£å†Œ™¿™ä¸€é—®é¢˜åQŒæˆ‘们采用了 Worker 化的方å¼åQŒå°†˜q™äº›æ“作¿UÕdˆ° Worker ¾U¿ç¨‹ä¸ï¼Œä»Žè€Œé¿å…主¾U¿ç¨‹çš„å¡™åÑ€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在进行埋ç‚ÒŽ—¶åQŒå¯èƒ½ä¼šæ¶‰åŠæ•°æ®åº“çš„ IO æ“作åQŒè¿™äº›æ“作也ä¸å¾è®®åœ¨ä¸Èº¿½E‹ä¸æ‰§è¡Œã€‚通过ž®†è¿™äº›æ“作放åˆ?Worker ¾U¿ç¨‹ä¸ï¼Œå¯ä»¥æœ‰æ•ˆé¿å…对主¾U¿ç¨‹çš„媄å“ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">针对åŒåˆ—布局ä¸çš„囄¡‰‡å’Œèµ„æºé¢„åŠ è²åQŒæˆ‘们采用åŽä¸ø™‡ªç ”çš„ RCP ¾|‘络解决æ–ÒŽ¡ˆåQˆç±»ä¼égºŽ HTTPåQ‰ï¼Œé€šè¿‡ Worker ¾U¿ç¨‹åœ¨è¿œç«¯è¿›è¡Œä¸‹è½½ï¼Œòq¶åœ¨å®ŒæˆåŽå°†¾l“æžœ˜q”回åˆîC¸»¾U¿ç¨‹ã€‚æ¤å¤–,TaskPool 的应用场景也éžå¸¸òq¿æ³›åQŒä¾‹å¦‚æ–‡ä»¶ä¸Šä¼ ã€å¤šåª’体æ“作以åŠå¯åЍä»ÕdŠ¡çš„ç¼–æŽ’ç‰ã€‚TaskPool 的优势在于轻é‡åŒ–åQŒé¿å…了¾U¿ç¨‹ä¸Šä¸‹æ–‡åˆ‡æ¢å¸¦æ¥çš„ä¸å¿…è¦è€—æ—¶ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>关于冷å¯åŠ¨å’Œé¦–åˆ·åœºæ™¯çš„ä¼˜åŒ–ã€?/strong>˜q™éƒ¨åˆ†ä¸»è¦åŒ…括两个方é¢ï¼šæ¨¡å—çš„æ‡’åŠ è²å’ŒåЍæ€ç»„ä»¶çš„å¤ç”¨æ± ã€‚æ‡’åŠ è²æ˜¯åº”用开å‘ä¸å¸¸è§çš„优化手ŒDµï¼Œ¾cÖM¼¼äºŽå®‰å“端çš?class order 机制。当应用ä¸éœ€è¦æŸä¸ªç±»æ—Óž¼Œå¯ä»¥å»¶è¿ŸåŠ è²è¯¥ç±»åQŒç›´åˆ°çœŸæ£éœ€è¦ä‹É用时æ‰åŠ è½½ã€‚è¿™¿Uæ–¹å¼å¯ä»¥æ˜¾è‘—æé«˜å†·å¯åŠ¨é˜¶æ®µçš„ä»£ç åŠ è½½æ•ˆçŽ‡ï¼Œä»Žè€Œå¤§òq…é™ä½Žå†·å¯åŠ¨æ—‰™•¿ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>动æ€ç»„ä»¶å’Œ¾l„äšgå¤ç”¨æ± åˆ™æ˜¯äØ“äº†è§£å†?UI ¾l„äšgé‡å¤åˆ›å¾çš„问题ã€?/strong>在应用ä¸åQŒå¯èƒ½ä¼šæœ‰å¤š¿U相åŒç±»åž‹çš„ UI ¾l„äšgåQˆä¾‹å¦‚å°¾U¢ä¹¦ä¸çš„½W”è®°¾l„äšgåQ‰ã€‚äØ“äº†é¿å…é‡å¤åˆ›å»ºå¸¦æ¥çš„开销åQŒæˆ‘们希望在˜q行时尽é‡å¤ç”¨å·²æœ‰çš„¾l„äšgåQŒè€Œä¸æ˜¯é¢‘¾J地创å¾å’Œé”€æ¯ã€?/p><h1>6ã€ç±»å‰ç«¯è§†è§’ä¸‹çš„æ¨¡å—æ‡’åŠ è½?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>我们通过特定的分æžå·¥å…·å¯¹æ‡’åŠ è½½è¿›è¡Œäº†æ·±å…¥åˆ†æžã€?/strong>如图所½Cºï¼Œæˆ‘们能够识别出å¯åŠ¨è¿‡½E‹ä¸åŠ è²çš„å„¿U模å—,包括 RNOHåQˆReact Native on HarmonyåQ‰ã€Web engineåQˆç½‘™åµå¼•擎)ã€Red PlayeråQˆæ’攑֙¨åQ‰ç‰¾l„äšg。这些模å—çš„åŠ è²˜q‡ç¨‹æ¶‰åŠåˆ°å¤šä¸?so æ–‡äšgåQŒå³å…׃ín对象文äšgã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095658657-2113307207.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> é€šè¿‡è‡ªä¸Šè€Œä¸‹çš„åˆ†æžæ–¹æ³•,我们å¯ä»¥æ¸…晰地看到æ¯ä¸ªæ¨¡å—åŠ è½½çš„å…·ä½“è€—æ—¶ã€‚è¿›ä¸€æ¥åˆ†æžè¿™äº?so æ–‡äšgä¸?RTSåQˆè¿è¡Œæ—¶¾pÈ»ŸåQ‰çš„å…Œ™”åQŒä»¥åŠå®ƒä»¬æ‰€å¼•å…¥çš?Napi çš?TS æ–‡äšgã€‚æˆ‘ä»¬è¿›è¡Œäº†æ‡’åŠ è½½æ½œåœ¨å¯¹è±¡çš„åˆ†æžåQŒå‘现许å¤?RTS å®žé™…ä¸ŠåÆˆä¸éœ€è¦çš„¾cÀL–‡ä»¶å·²¾lè¢«åŠ è²ã€‚è¿™æ˜¯å› ä¸ºå¼€å‘者在¾~–å†™ä»£ç æ—Óž¼Œå¯èƒ½òq¶æœªå……分考虑到导入一个类或方法对应用å¯åŠ¨å»¶è¿Ÿçš„åª„å“ã€?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">ä¸ÞZº†ä¼˜åŒ–˜q™ä¸€˜q‡ç¨‹åQŒæˆ‘ä»¬çš„ç›®æ ‡æ˜¯å‡ž®‘å—节ç ä¸éœ€è¦åŠ è½½çš„¾cÀL–‡ä»¶æ•°é‡ï¼Œä»Žè€ŒåŠ å¿«åº”ç”¨çš„å†·å¯åŠ¨é€Ÿåº¦ã€‚åŽä¸ºæä¾›çš„¾~–译器能够将 RTS ¾~–译æˆ?Ark bytecodeåQˆæ–¹èˆŸå—节ç åQ‰ï¼Œ˜q™æ˜¯ä¸€¿U高效的å—èŠ‚ç æ ¼å¼ã€‚通过å‡å°‘需è¦åŠ è½½çš„¾cÀL–‡ä»¶æ•°é‡ï¼Œæˆ‘们å¯ä»¥æ˜¾è‘—æé«˜åº”用的å¯åŠ¨é€Ÿåº¦ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">åŽäØ“˜q˜æä¾›äº†ä¸€¿Uæ‡’åŠ è²çš„导入方å¼ï¼Œåªæœ‰åœ¨çœŸæ£éœ€è¦ä‹É用æŸä¸ªç±»æ—Óž¼Œå®ƒæ‰ä¼šè¢«åŠ è²ã€‚è¿™¿Uæ‡’åŠ è²æœºåˆ¶æœ‰åŠ©äºŽå‡ž®‘应用å¯åŠ¨æ—¶çš„èµ„æºæ¶ˆè€—。这引å‘了一个问题:ä¸ÞZ»€ä¹ˆåŽä¸ÞZ¸é»˜è®¤é‡‡ç”¨å…¨æ‡’åŠ è²æ–¹å¼åQŒå³åªæœ‰åœ¨ä‹É用时æ‰åŠ è½½ç±»æ–‡äšg呢?我已¾lå°†˜q™ä¸ªé—®é¢˜å馈¾l™åŽä¸ºï¼Œòq¶ä¸”¾pÈ»Ÿä¾§å¯èƒ½ä¼šè€ƒè™‘在未æ¥çš„版本ä¸é»˜è®¤é‡‡ç”¨æ‡’åŠ è²æ–¹å¼åQŒåŒæ—¶ä»ç„¶å…许用æˆäh‰‹åŠ¨é€‰æ‹©éžæ‡’åŠ è²çš„æ–¹å¼è¿›è¡Œç±»æ–‡äšgçš„åŠ è½½ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095706195-1478026318.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>7ã€åЍæ€ç»„ä»?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在尾U¢ä¹¦çš„首™åµåœºæ™¯ä¸åQŒç¬”记塾l„äšg在多个场景ä¸è¢«å¤ç”¨ã€?/strong>ä¸ÞZº†é¿å…é‡å¤åˆ›å¾ UI 坯D‡´çš„æ€§èƒ½æ¶ˆè€—,我们采用了动æ€ç»„件的概念。动æ€ç»„ä»¶çš„æ ¸å¿ƒåŽŸç†æ˜¯åˆ©ç”¨å ä½ç¬¦æ¥åšg˜qŸç»„件的创å¾åQŒè¿™ä¸?Android å¼€å‘ä¸ä½¿ç”¨ Stub 模å¼çš„æ¦‚å¿ëŠ›¸ä¼¹{€‚在˜q™ç§æ¨¡å¼ä¸‹ï¼Œå¯ä»¥ä½¿ç”¨ä¸€ä¸ªä»£ç†å¯¹è±¡ï¼ˆstubåQ‰æ¥ä»£è¡¨ž®šæœªåˆå§‹åŒ–çš„¾l„äšgåQŒä»Žè€Œåšg˜qŸç»„件的创徘q‡ç¨‹ã€‚当真æ£éœ€è¦æ¸²æŸ“组件时åQŒå†ž®†æ¸²æŸ“内容填充进去,从而é¿å…毋ơ调用构建函敎ͼˆå¦?buildåQ‰æ—¶çš„耗时ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">å ä½é€»è¾‘通过¾pÈ»Ÿçš?API 实现åQŒæ¶‰åŠåˆ° NodeContainer å’?NodeController 的绑定关¾p…R€‚Container å’?Controller ä¸€ä¸€æ˜ å°„åQŒç”± NodeCore ˜q›è¡Œ½Ž¡ç†ã€‚Container 仅管ç†å½“å‰å±•现的内å˜éƒ¨åˆ†åQŒä‹É用完毕åŽéœ€è¦å°†å…¶æ”¾å›žæ± ä¸è¿›è¡Œå›žæ”¶å’Œå†åˆ©ç”¨ã€‚以冷å¯åŠ¨é¦–åˆ·äØ“ä¾‹ï¼Œåœ¨å¯åŠ¨é˜¶ŒDµå¯ä»¥å…ˆèŽ·å–¼‚盘上的½W”记内容åQŒç„¶åŽåœ¨ BuilderNode ä¸é¢„先创建多ä¸?Image ¾l„äšgã€‚è¿™æ øP¼Œåœ¨ç‰å¾…网¾lœæˆ–æŽ¨èæŽ¥å£å“应æ—Óž¼ŒImage ¾l„äšgå·²ç»åˆ›å¾å®Œæ¯•åQŒä»Žè€Œåœ¨é¦–页åˆäh–°æ—¶å¯ä»¥ç«‹å³ä‹É用这些组ä»Óž¼Œ˜q™å¯¹äºŽæé«˜é¦–刷éžå¸¸æœ‰ç›Šã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095713990-2006155962.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> 对于¾l„äšgå¤ç”¨æ± ,当动æ€ç»„ä»¶ä¸å†ä‹É用时åQŒéœ€è¦å°†å…¶è¿”回到¾l„äšgæ± ä¸ã€‚对于自定义¾l„äšgåQŒé€šè¿‡ NoteContainer å 使–¹å¼åQŒç”± NodeController ˜q›è¡Œ½Ž¡ç†ã€‚在需è¦åˆ›å»ºå¾l„äšgæ—Óž¼Œå…ˆåœ¨ NodePool 䏿Ÿ¥æ‰¾ï¼Œå¦‚果找ä¸åˆŽÍ¼Œåˆ™åˆ›å»ºæ–°¾l„äšgåQ›å¦‚果找刎ͼŒåˆ™å°è¯•å¤ç”¨ã€‚æµ½E‹å›¾å±•示了从 Container è£…è² NodeItem 开始,通过 NodePool 查找åQŒå¦‚果找到则˜q›è¡Œæ¡äšg判æ–å’Œå¤ç”¨ã€?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">¾l„äšg的新建和å¤ç”¨˜q‡ç¨‹ä¸ï¼Œå¦‚果扑ֈ°å¯¹åº”çš?NodeItemåQŒåˆ™è°ƒç”¨ build æ–ÒŽ³•òq¶æ›´æ–°è‡ªå®šä¹‰¾l„äšg的状æ€ï¼Œå®Œæˆå¤ç”¨ã€‚如果有对应çš?NodeItemåQŒå¯ä»¥ç›´æŽ¥é€šè¿‡ update 函数更新内部状æ€åƈåˆäh–° UIã€‚ä½†è¦æ³¨æ„,update æ–ÒŽ³•å¯èƒ½ä¼šå› 状æ€å˜é‡è¿‡äºŽå¤æ‚而导致更新åšg˜qŸï¼Œå‡ºçŽ°å›‘ÖƒŒD‹åª„ã€‚å› æ¤ï¼Œéœ€è¦æ‹†åˆ?stateåQŒä‹Éå…¶èƒö够å°åQŒä»¥¼‹®ä¿çжæ€å˜æ›´åˆ°é€šçŸ¥ UI 的时间羃çŸï¼Œæ¶ˆé™¤ŒD‹åª„ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">我们的ç–略是优先åœ?NodePoolåQˆèŠ‚ç‚ÒŽ± åQ‰ä¸æŸ¥æ‰¾å¯ç”¨çš?NodeItemåQˆèŠ‚ç‚šw¡¹åQ‰ã€‚如æž?NodePool ä¸å˜åœ¨å¯ç”¨çš„ NodeItemåQŒæˆ‘们就直接使用它,òq‰™€šè¿‡ getNode æ–ÒŽ³•˜q›è¡Œ item ¾l‘定åQŒéšåŽæ›´æ–°å…¶çжæ€ä»¥å®žçްå¤ç”¨ã€‚如æž?NodePool 䏿²¡æœ‰æ‰¾åˆ°å¯¹åº”çš„ NodeItemåQŒé‚£ä¹ˆæˆ‘们将通过 makeNode æ–ÒŽ³•调用 build 函数æ¥åˆ›å»ºæ–°çš„节炚w¡¹ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">完戾l„äšgçš„å¤ç”¨åŽåQŒæˆ‘们需è¦å°†˜q™äº›¾l„äšg˜q”å›žåˆ°ç¼“å˜æ± ä¸ï¼Œä»¥ä¾¿åœ¨æœªæ¥å¯ä»¥å†‹Æ¡ä‹É用。这个过½E‹æ¶‰åŠåˆ° NodeContaineråQˆèŠ‚ç‚¹å®¹å™¨ï¼‰å’?NodeControlleråQˆèŠ‚ç‚ÒŽŽ§åˆ¶å™¨åQ‰çš„销æ¯ï¼Œòq¶å°† NodeItem 釿–°æ”‘Ö›ž NodePool ä¸ã€‚äØ“äº†æ›´æœ‰æ•ˆåœ°ç®¡ç†ç¼“å˜ï¼Œä¸šåС层å¯ä»¥åˆ©ç”?LRUåQˆæœ€˜q‘最ž®‘ä‹É用)½Ž—法åQŒæˆ–者é¿`蒙系¾lŸæä¾›çš„ LRUCache å’?LiUHashMap ½{‰æ•°æ®ç»“构,æ¥è‡ªå®šä¹‰¾~“å˜çš„大ž®ï¼Œä»Žè€Œä¼˜åŒ–组件的å¤ç”¨å’Œç¼“å˜ç–ç•¥ã€?/p><h1>8ã€æ»‘动类场景</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在尾U¢ä¹¦åº”用ä¸ï¼Œæ»‘动¾cÕdœºæ™¯éžå¸¸æ™®é,包括推è™å늚„å频é“ã€ä¸ªäººé¡µä¸çš„æ”¶è—点赞以åŠç”¨æˆ·è‡ªå·±å‘布的笔讎ͼŒ˜q˜æœ‰æœçƒ¦¾l“æžœ™åµä¸çš„æœç´¢ç»“æžœå’Œç”¨æˆ·å•†å“½{‰ï¼Œ˜q™äº›éƒ½æ˜¯åŒåˆ—滑动场景。这些åŒåˆ—æ»‘åŠ¨åœºæ™¯å æ®äº†ž®çº¢ä¹¦ç”¨æˆ·ä½“验的 90% åˆ?95%åQŒå› æ¤ï¼Œæ»‘动体验的æµç•…性对于用æˆïLš„æ•´ä½“体验臛_…³é‡è¦ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ä¸ÞZº†æå‡æ»‘动场景的æµç•…性,ž®çº¢ä¹¦é‡‡ç”¨äº† RCP 框架æ¥ä¼˜åŒ–网¾lœèµ„æºçš„获å–ã€?/strong>RCP 是åŽä¸ºæä¾›çš„一个系¾lŸç»„件能力,主è¦è§£å†³¾|‘络资æºèŽ·å–æ•ˆçŽ‡é—®é¢˜ã€‚é€šè¿‡ RCPåQŒå¼€å‘者å¯ä»¥åœ¨éœ€è¦æ—¶å‘è“v¾|‘络è¯äh±‚åQŒåƈ自定义资æºçš„写入地å€åQŒå¦‚æ–‡äšgæˆ?ArrayBuffer。RCP 负责高效地将资æºå†™å…¥æŒ‡å®šä½ç½®åQŒè€Œåœ¨ä¸éœ€è¦æ—¶åQŒå¯ä»¥å–æ¶?RCP è¯äh±‚åQŒä»Žè€Œä¼˜åŒ–资æºç®¡ç†ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095720506-16141495.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> RCP çš„æ ¸å¿ƒèƒ½åŠ›åœ¨äºŽèƒ½å¤Ÿå–æ¶ˆè¯·æ±‚,òq¶å¯¹å¼Þq½‘场景˜q›è¡Œäº†ä¼˜åŒ–,其å¾è”过½E‹ä¼˜äº?HTTP 1.1 æˆ?2.0。基äº?RCPåQŒå°¾U¢ä¹¦˜q˜åº”用了åŽäØ“ä¿„ç ”æ‰€æä¾›çš?Prefetch æ–ÒŽ¡ˆã€‚Prefetch æ–ÒŽ¡ˆåœ¨ç€‘布‹¹ç»„ä»¶çš„å¯è§åŒºå˜æ›´æ—¶åQŒé€šè¿‡ worker ¾U¿ç¨‹åQˆå¦‚ prefetched workeråQ‰å¯åŠ¨èµ„æºèŽ·å–,当ä¸å¯è§æ—¶å…³é—,从而优化快速滑动场景,å‡å°‘ä¸å¿…è¦çš„带宽消耗ã€?/p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在快速滑动过½E‹ä¸åQŒæœ‰äº?item å¯èƒ½çŸæš‚消失åQŒå¯¹äºŽåŒç«¯åœºæ™¯ï¼Œ¾|‘络è¯äh±‚å¯èƒ½å·²ç»å‘å‡ºä¸”åœ¨é€”ï¼Œæ— æ³•å–æ¶ˆåQŒå¯¼è‡´å¸¦å®½æµªè´V€‚Prefetch å’?RCP ¾l“åˆçš„æ–¹å¼å¯ä»¥ä¼˜åŒ–è¿™¿U快滑场景,防æ¢çœŸæ£æƒŒ™¦çœ‹çš„内容出现白å—。Prefetched worker ¾U¿ç¨‹½Ž¡ç†å¤šä¸ª RCP è¯äh±‚åQŒæ¯ä¸ªè¯·æ±‚都有完整的生命周期。当通过 RCP è¯äh±‚获å–åˆ°æ‰€éœ€èµ„æºæ—Óž¼Œä¼šé€šçŸ¥ä¸Èº¿½E‹ï¼Œä¸Èº¿½E‹æ ¹æ®åœ°å€åŠ è²èµ„æºåˆ?Image ¾l„äšg或å ä½ç¬¦ RQI ¾l„äšgä¸ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在尾U¢ä¹¦çš„å¼€å‘过½E‹ä¸åQŒæˆ‘们é‡åˆîCº†ä¸€äº›æ€§èƒ½çƒç‚¹é—®é¢˜åQŒè¿™äº›é—®é¢˜å¤§å¤šæ˜¯é€šè¿‡ Code LinteråQˆä»£ç æ£€æŸ¥å·¥å…øP¼‰‹‚€‹¹‹å‡ºæ¥çš„。由于开å‘节å¥å¿«åQŒå¼€å‘者在¾~–å†™ä»£ç æ—¶å¯èƒ½éš¾ä»¥å…³æ³¨åˆ°æ€§èƒ½é—®é¢˜åQŒå› æ¤éœ€è¦?CIåQˆæŒ¾l集æˆï¼‰‹‚€æŸ¥å·¥å…äh¥è¾…助‹‚€æŸ¥ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>常è§çš„æ€§èƒ½çƒç‚¹åŒ…括åQ?/strong></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>1åQ?/em></strong><span style="color: #800000;">在列表场景ä¸é¢‘ç¹ä½¿ç”¨çš?LadyForEach ¾l„äšgåQŒéœ€è¦æŒ‡å®?key 以实现列表å¤ç”¨ã€?/span>如果开å‘者忘记指å®?keyåQŒCode Linter 会报错æ½Cºï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>2åQ?/em></strong><span style="color: #800000;">åœ?onClick æˆ?onVisible ½{‰å‡½æ•îC¸¾~–写½I?callbackåQˆå›žè°ƒå‡½æ•ŽÍ¼‰ã€?/span>当这些空 callback ¿U¯ç¯åˆîC¸€å®šæ•°é‡ï¼ˆå¦‚å‡ ç™¾ä¸ªæˆ–ä¸Šåƒä¸ªåQ‰æ—¶åQŒå¯èƒ½ä¼šä¸¥é‡æ‹–慢应用性能。Code Linter å¯ä»¥æ‰«æå‡ø™¿™¾c»é—®é¢˜ï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>3åQ?/em></strong><span style="color: #800000;">未ä‹Éç”?TaskPool 处熾|‘络资æºã€?/span>例如åQŒImage Bitmap ç›´æŽ¥ä¼ é€?URL ˜q›è¡ŒåŒæ¥åŠ è²åQŒå½“¾|‘络é˜Õd¡žæ—¶ä¼šå¯ÆD‡´ UI ¾U¿ç¨‹å¡é¡¿åQ?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>4åQ?/em></strong><span style="color: #800000;">夿‚çš?ETS ¾l„äšg在列表场景下未实现é‡ç”¨ã€?/span>未设¾|®é‡ç”¨çš„ ETS ¾l„äšg在列表滚动时需è¦é‡æ–°æž„建,éžå¸¸è€—时。组件嵌套层¾U§è¿‡æ·×ƒ¹Ÿä¼šå¯¼è‡´æ€§èƒ½é—®é¢˜ã€‚在安å“端,布局‹‚€æŸ¥å™¨å»ø™®®å®¹å™¨åµŒå¥—ä¸è¶…˜q‡å››å±‚ï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>5åQ?/em></strong><span style="color: #800000;">使用 JSON.stringify ˜q›è¡Œå¯¹è±¡åºåˆ—化ã€?/span>JSON.stringify 有一定耗时åQŒå°¤å…¶åœ¨å¤„ç† 100KB å·¦å³çš„æ•°æ®æ—¶åQŒå¯èƒ½éœ€è¦?10 毫秒左å³ã€‚Code Linter 会æ½Cø™¿™éƒ¨åˆ†æ€§èƒ½é—®é¢˜åQŒä½†æ˜¯å¦éœ€è¦è{异楾U¿ç¨‹éœ€è¦å¼€å‘者自行判æ–ï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>6åQ?/em></strong><span style="color: #800000;">调用 Image çš?syncLoadåQˆåŒæ¥åŠ è½½ï¼‰ã€?/span>在æŸäº›åœºæ™¯ä¸‹åQŒå¦‚转场动画åQŒéœ€è¦åŒæ¥åŠ è½?image 以ä¿è¯è¿žè´¯æ€§ã€‚但如果 image 是鞼‚盘资æºåQˆå¦‚¾|‘络资æºåQ‰ï¼Œä¼šå¯¼è‡´å¡å¸§ã€‚Code Linter å¯ä»¥æ‰«æå‡ø™¿™¾c»é—®é¢˜ï¼›</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>7åQ?/em></strong><span style="color: #800000;">关于¾~–译器的优化ã€?/span>ETS ¾l„äšg应é¿å…嵌套过深。如果嵌套过深,å¯ä»¥ž®†æ¯å±‚函数通过¾pÈ»Ÿçš?builder param æˆ?builder 函数转æ¢ã€‚ä‹Éç”?@builder æ³¨è§£æ ‡è¯†çš„å‡½æ•îC¼šåœ¨ç¼–译期间与 ETS ä»£ç æ•´åˆåQŒä»Žè€Œæé«˜ç¼–译器优化效果ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">Code Linter 支æŒå…¨é‡æ‰«æå’ŒåŸºäº?Git DIFF çš„å¢žé‡æ‰«æï¼Œä½†ç›®å‰åŽä¸ºçš„ Code Linter ˜q˜ä¸èƒ½ä¸Ž Git Prehook å…Œ™”åQŒå¯¼è‡´æ— 法在‹¹æ°´¾U¿ä¸Šè‡ªåЍ‹‚€æŸ¥ã€‚虽ç„?CI ‹‚€æŸ¥é˜¶ŒDµå·²æœ?Code LinteråQŒä½†æœ¬åœ°ä»£ç æäº¤é˜¶æ®µä»éœ€æ‰‹åЍ˜q行脚本åQŒæ— 法实现自动检查。我们æ£åœ¨å‚¬ä¿ƒåŽä¸ø™§£å†Œ™¿™ä¸€é—®é¢˜ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095727349-1682226898.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> </p></div><h1>9ã€UI é‡è²åœºæ™¯åˆ†å“áæ–ÒŽ¡ˆ</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在处ç?UI é‡è²åœºæ™¯æ—Óž¼Œæˆ‘们采用了一¿U称为分帧方案的æ–ÒŽ³•ã€?/strong>分å“á˜q™ä¸ªæœ¯è¯çš„å«ä¹‰æ˜¯åQŒå½“åº”ç”¨åœ¨ä¸€å¸§å†…æ— æ³•å®Œæˆæ‰€æœ‰ç»˜åˆ¶å·¥ä½œï¼Œæˆ–者在多å“áå†…éƒ½æ— æ³•å®Œæˆæ—Óž¼Œä¼šå¯¼è‡´å±òq•å¡™å¿çŽ°è±¡ã€‚å°½½Ž¡ç”¨æˆ·å¯ä»¥çœ‹åˆ°ç”»é¢ï¼Œä½†å´æ— 法˜q›è¡Œæ»‘动或æ“作。在˜q™ç§æƒ…况下,分å“áæ–ÒŽ¡ˆž®±æ˜¾å¾—尤为åˆé€‚。虽然分帧方案å¯èƒ½çœ‹èµäh¥ä¸æ˜¯æœ€ä¼˜é›…的解军_Šžæ³•ï¼Œä½†å®ƒ¼‹®å®žèƒ½å¤Ÿæœ‰æ•ˆåœ°è§£å†Ïx€§èƒ½é—®é¢˜åQŒä‹É应用性能辑ֈ°é¢„æœŸæ ‡å‡†ã€‚åˆ†å¸§æ–¹æ¡ˆè™½ç„¶çœ‹ä¼¼æ˜¯ä¸€¿Uåº”æ€¥æŽªæ–½ï¼Œä½†å®ƒèƒ½å¤Ÿå¸®åŠ©åº”ç”¨æ€§èƒ½è¾¾æ ‡ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>分å“áæ–ÒŽ¡ˆçš„æµ½E‹å¤§è‡´å¦‚下:</strong>å‡è®¾æˆ‘们有数æ?aã€bã€c éœ€è¦æ¸²æŸ“,未采用分帧方案å‰åQŒæ•°æ?aã€bã€c ä¼šåŒæ—¶åˆ°è¾‘ÖÆˆè§¦å‘状æ€å˜æ›ß_¼Œ˜q›è€Œé©±åŠ¨æ•´ä¸?UI ˜q›è¡Œåˆäh–°ã€‚这会导致在一帧内需è¦ç»˜åˆ¶å¤§é‡?UI ¾l„äšgåQŒä»Žè€Œåª„å“åº”ç”¨æ€§èƒ½ã€‚äØ“äº†è§£å†Œ™¿™ä¸ªé—®é¢˜ï¼Œæˆ‘们采用分å“áæ–ÒŽ¡ˆåQŒå°†æ•°æ® aã€bã€c 拆分开åQŒåˆ†åˆ«åœ¨ä¸åŒçš„å“áä¸è¿›è¡Œæ¸²æŸ“ã€‚ä¾‹å¦‚ï¼Œæ•°æ® a åœ¨ç¬¬ä¸€å¸§ä¸æ¸²æŸ“完æˆåŽï¼Œé€šè¿‡è°ƒç”¨å®è§‚指ä×o让其˜q›å…¥ä¸‹ä¸€é˜¶æ®µåQŒç„¶åŽåœ¨ä¸‹ä¸€å¸§ä¸æ›´æ–°æ•°æ® båQŒä¾æ¤ç±»æŽ¨ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095737895-546186029.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"> </p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>在尾U¢ä¹¦çš„图文笔记场景ä¸åQŒåˆ†å¸§æ–¹æ¡ˆå¾—åˆîCº†åº”用ã€?/strong>当用户在首页的åŒåˆ—场景ä¸ç‚¹å‡»ä¸€½‹‡ç¬”记进入笔记详情页æ—Óž¼Œ˜q™ä¸ª˜q‡ç¨‹æ¶‰åŠåˆ°è®¸å¤šç»„ä»¶çš„åŠ è²ã€‚我们å¯ä»¥å°†˜q™äº›¾l„äšg拆分æˆä¸åŒçš„帧,例如å¸?aã€å“á b å’Œå“á c。对于用戯‚€Œè¨€åQŒä»–们通常希望在第一旉™—´çœ‹åˆ°æ•´ä¸ªå¤§å±çš„ç”»é¢ï¼Œå› æ¤æˆ‘们会优先在å¸?a ä¸å±•½Cºå¤§å›¾ã€‚而在å¸?b å’Œå“á c ä¸ï¼Œæˆ‘们å†å¤„ç†é¡¶éƒ¨å¯¼èˆªæ 或底部交互区½{‰å†…å®V€‚通过˜q™ç§åˆ†å“á½{–ç•¥åQŒæˆ‘们能够确ä¿ç”¨æˆ·åœ¨½W¬ä¸€æ—‰™—´çœ‹åˆ°æœ€å…³é”®çš„å†…å®¹ï¼ŒåŒæ—¶é¿å…äº†å› ä¸ÞZ¸€‹Æ¡æ€§åŠ è½½è¿‡å¤šç»„ä»¶è€Œå¯¼è‡´çš„æ€§èƒ½é—®é¢˜ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095744638-1715916034.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /></div><h1>10ã€é¿`è’™NEXT调优工具</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong>ä¼ ç»Ÿçš„ä¸»è§‚å·¥å…·å¯¹äºŽé¿`è’?OS 的性能分æžä»ç„¶é€‚用ã€?/strong>例如åQŒæŠ–韛_’Œž®çº¢ä¹¦éƒ½é€šè¿‡ç«žå“åˆ†æžæ¥è¿›è¡Œä¸»è§‚测评。这¿Uèƒ½åŠ›ä¸»è¦æ˜¯é€šè¿‡å½•屿¥å±•½Cºæ•´ä¸ªæµ½E‹çš„耗时和时长,特别适åˆè¯„估冷å¯åŠ¨å®Œæˆæ—¶å»¶å’Œè½¬åœº˜q‡ç¨‹çš„æ€§èƒ½ã€‚通过录å±åQŒæˆ‘们å¯ä»¥é€å“áæŸ¥çœ‹ç”¨æˆ·ä»Žç‚¹å‡Õd¼€å§‹åˆ°¾l“æŸçš„å“áæ•°å’ŒçœŸå®žæ—‰™•¿åQŒä»¥æ¤æ¥è¡¡é‡æ•´ä¸ª˜q‡ç¨‹çš„æŒ¾læ—¶é—´ã€?/p><h3>10.1 鸿蒙性能分æžå·¥å…·åQšIDE Profiler</h3><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">除了主观工具åQŒæˆ‘们还å¯ä»¥ä½¿ç”¨ IDE æä¾›çš„æ€§èƒ½åˆ†æžå·¥å…·åQŒå¦‚ ProfileråQŒæ¥åˆ†æžæ…¢å‡½æ•°ã€‚ç”±äº?ArkTS ¾~–程è¯è¨€æ¡†æž¶ä¸»è¦é€šè¿‡ RTS å’?NAPIåQˆåŽŸç”Ÿåº”ç”¨æŽ¥å£ï¼‰˜q›è¡Œå…Œ™”åQŒå› æ¤éœ€è¦èƒ½å¤ŸæŸ¥çœ?ArkTS å’?NAPI çš„æ•´ä¸ªå †æ ˆå±‚¾U§ã€‚è¿™ä¸Žå®‰å“æœ‰æ‰€ä¸åŒåQŒå› 为当 Java 通过 Java Native API 与原生代ç 交互时åQŒå †æ ˆåƈä¸é‚£ä¹ˆå®¹æ˜“查看ã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在尾U¢ä¹¦çš„æ€§èƒ½åˆ†æžä¸ï¼Œæˆ‘们展示了一个整体线½E‹åˆ†æžçš„例å。在左侧åQŒå¯ä»¥çœ‹åˆ°å°¾U¢ä¹¦çš„主¾U¿ç¨‹åQˆå¦‚ com 点开头的¾U¿ç¨‹åQ‰ã€Daemon ¾U¿ç¨‹ã€Worker ¾U¿ç¨‹ä»¥åŠ FFRT ¾U¿ç¨‹ã€‚FFRT 是一¿Uè¿è¡Œå‡½æ•°æµçš„线½E‹ï¼Œå¯ä»¥æ‰§è¡Œ TaskPool 上的函数。在下图å³ä¾§åQŒæˆ‘们å¯ä»¥çœ‹åˆ°åœ¨ RTS 环境下的分枾l“æžœåQŒå…¶ä¸é¡¶éƒ¨æ˜¾½CÞZº† NAPI 调用åQŒåº•部则是一äº?C++ å‡½æ•°ã€‚æ•´ä¸ªè°ƒç”¨æ ˆå’Œå®ƒä»¬çš„æ‰§è¡Œæ—‰™•¿æ˜¯é€šè¿‡ä¸€¿U自上而下的视图æ¥å±•示的。利用这¿U视图,我们å¯ä»¥¾_„¡¡®åœ°è¯†åˆ«å‡ºå“ªäº›æ…¢å‡½æ•°æ˜¯é€ æˆç•Œé¢å¡é¡¿çš„åŽŸå› ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095751591-1532375318.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong>10.2 性能场景‹¹‹è¯•工具åQšDevEco Testing</strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">DevEco Testing 是一个性能‹¹‹è¯•工具åQŒå®ƒçš„功能éžå¸¸å…¨é¢ï¼Œæ€§èƒ½‹¹‹è¯•åªæ˜¯å…¶ä¸çš„一部分。除了性能‹¹‹è¯•åQŒå®ƒ˜q˜æ”¯æŒå¤š¿U测试场景,包括 debug testing。在 debug testing 场景ä¸ï¼Œç”¨æˆ·å¯ä»¥è‡ªå®šä¹‰ä¸šåŠ¡åœºæ™¯ï¼Œç›‘æµ‹ CPU 的耗时和负载ã€GPU 的耗时和负载ã€è®¾å¤‡å‘çƒæƒ…况以åŠåŠŸè€—ç‰é—®é¢˜ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095758308-470924747.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;">使用 DevEco Testing ˜q›è¡Œæ€§èƒ½‹¹‹è¯•的过½E‹å¦‚下:首先定义‹¹‹è¯•场景åQŒç„¶åŽæ•获主帧数æ®ã€‚一旦开始æ•èŽøP¼Œž®±å¯ä»¥è§‚‹¹‹åˆ° FPSåQˆå“á率)ã€GPU è´Ÿè²ä»¥åŠæ•´ä½“åŠŸè€—ç‰æ•°æ®ã€‚å®Œæˆæ€§èƒ½æ•°æ®æ•获åŽï¼Œå·¥å…·ä¼šç”Ÿæˆä¸€ä»½æŠ¥å‘Šï¼Œä¸ºç”¨æˆäh供了一个完整的场景分æžã€‚丘q‡ï¼Œç›®å‰åœºæ™¯å®šä¹‰˜q˜ç¼ºä¹è„šæœ¬åŒ–èƒ½åŠ›åQŒéœ€è¦ähå·¥æ“作辅助。未æ¥ï¼Œæˆ‘们期望能够实现场景定义的脚本化é…ç½®åQŒç±»ä¼égºŽè‡ªåŠ¨åŒ–æµ‹è¯•ã€‚è¿™æ øP¼Œž®±å¯ä»¥é€šè¿‡è‡ªåŠ¨åŒ–å·¥å…øP¼Œå®žçŽ°æ›´é«˜æ•ˆçš„‹¹‹è¯•‹¹ç¨‹ã€?/p></div><h1>11ã€å°¾l“与展望</h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">在对性能场景˜q›è¡Œä¼˜åŒ–åŽï¼Œæˆ‘们å¯ä»¥çœ‹åˆ°æ˜¾è‘—的收益。在实验室环境下的测试显½Cºï¼Œå†·å¯åŠ¨æ—¶é—´å¯ä»¥é™ä½?50%åQŒå“应时延å¯ä»¥ä½Žäº?100 毫秒åQŒå®Œæˆæ—¶å»¶åˆ™ä¿æŒä¸ŽåŒç«¯æŒòqÏxˆ–更优。在‹¹ç•…性方é¢ï¼Œåœ¨å¤šåœºæ™¯å’Œé‡è½½åœºæ™¯ä¸‹å‡å®žçŽîCº† 0 丢å“áçš„æˆæžœã€‚éœ€è¦æ³¨æ„的是,˜q™é‡Œçš„æµ‹è¯•是在éžé‡è²æ¨¡å¼ä¸‹è¿›è¡Œçš„åQŒå³æ²¡æœ‰åŒæ—¶˜q行多个资æºå¯†é›†åž‹åº”用,如《王者è£è€€ã€‹æˆ–《和òq³ç²¾è‹±ã€‹ç‰ã€‚在˜q™ç§æ¡äšgä¸‹ï¼Œæˆ‘ä»¬çš„æ ¸å¿ƒåœºæ™¯ï¼Œå¦‚å†·å¯åŠ¨ã€æœç´¢å’Œä¸ªäh™å늉åQŒéƒ½èƒ½å¤Ÿä¸ŽåŒç«¯å®Œå…¨å¯¹é½ã€?/p><div style="font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://img2024.cnblogs.com/blog/1834368/202505/1834368-20250519095805977-1776350243.png" alt="" style="border: 0px; max-width: 100%; height: auto !important; cursor: zoom-in; transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) 0s !important;" /><p style="margin-top: 10px; margin-bottom: 10px;"><strong>展望未æ¥åQŒæœ‰å‡ 个方å‘åQ?/strong></p></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>1åQ?/em></strong><span style="color: #800000;">首先</span>åQšæˆ‘ä»¬å¸Œæœ›èƒ½å¤Ÿåœ¨å…¨åœºæ™¯ä¸‹å®žçŽ°¾l„äšgå¤ç”¨åQŒä»¥æœ€å¤§ç¨‹åº¦åœ°å®žçް UI å¤ç”¨ã€‚è¿™æ ·å¯ä»¥åœ¨å¤šä¸ªä¸šåŠ¡ä¹‹é—´çš„è{场或 UI 创徘q‡ç¨‹ä¸ï¼Œž®†ä¸å¿…è¦çš?UI 创å¾å’Œæ¶ˆè€—é™åˆ°æœ€ä½Žã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>2åQ?/em></strong><span style="color: #800000;">其次</span>åQšæˆ‘ä»¬æ£åœ¨è€ƒè™‘代ç å»¶è¿ŸåŠ è²çš?lazy 机制。åŽä¸ºå†…部å¯èƒ½å°†å…¶ä½œä¸ºé€šç”¨çš„è§£å†Ïx–¹æ¡ˆï¼Œä½†åœ¨å®žæ–½˜q‡ç¨‹ä¸æˆ‘们å‘çŽîCº†è®¸å¤šé—®é¢˜åQŒä¾‹å¦‚å…¨ lazy åŠ è²å¯èƒ½ä¼šåª„å“第三方 SDKåQŒå¦‚支付å®ç‰åQŒå› 为它们å¯èƒ½è¿›è¡Œäº†é¢å¤–的二˜q›åˆ¶ä¼˜åŒ–åQŒå¯¼è‡´åŠ è½½å¤±è´¥æˆ–æ— æ³•å“åº”ã€‚å› æ¤ï¼Œæˆ‘们期望通过代ç å»¶è¿ŸåŠ è²æ¥å®žçŽ°æŒ¾læ²»ç†ï¼Œä½†ç›®å‰å®ƒå¯èƒ½˜q˜ä¸é€‚åˆå…¨åœºæ™¯çš„ lazy importã€?/p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><strong><em>3åQ?/em></strong><span style="color: #800000;">最å?/span>åQšæˆ‘ä»¬å…³æ³¨é˜²åŠ£åŒ–é—®é¢˜åQŒå³åœ¨æ¯ä¸ªç‰ˆæœ¬å‘布时åQŒæˆ‘们ä¸å¸Œæœ›æ€§èƒ½æŒ‡æ ‡å‡ºçŽ°åŠ£åŒ–ã€‚æˆ‘ä»¬å¸Œæœ›èƒ½å¤Ÿåœ¨å¼€å‘阶ŒDµå°±å®šä¹‰åŠ£åŒ–æŒ‡æ ‡å’Œå…·ä½“æ•°æ®ï¼Œä»¥é˜²æ¢åº”用劣化。这部分å¯èƒ½éœ€è¦å€ŸåŠ© DevEco Testing å’Œä¸»è§‚æµ‹è¯„çš„æ–¹å¼æ¥å®žçŽ°ã€‚åŒ…æ‹¬æˆ‘ä»¬å…³æ³¨çš„æŒ‡æ ‡åQŒä¾‹å¦‚冷å¯åŠ¨å’Œæµç•…性ç‰åQŒæœªæ¥å¯èƒ½ä¼š¾U›_…¥é˜²åŠ£åŒ–åœºæ™¯ã€‚ç›®å‰ï¼Œæˆ‘们çš?CI 环节æˆ?RC 环节åQŒåŒ…æ‹¬æµæ°´çº¿çš„æ€§èƒ½½Ž¡æŽ§å’Œä»£ç ?CR 机制åQŒéƒ½èƒ½å¤Ÿè§„鿘q™ç±»é—®é¢˜ã€?/p><h1>12ã€ç›¸å…Œ™µ„æ–?/h1><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[1] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">鸿蒙NEXTå®˜æ–¹å¼€å‘æŒ‡å?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[2] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">一òq´æ’¸å®Œç™¾ä¸‡è¡Œä»£ç åQŒä¼ä¸šå¾®ä¿¡çš„全新鸿蒙NEXT客户端架构演˜q›ä¹‹è·?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[3] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">鸿蒙NEXT如何ä¿è¯åº”用安全åQšè¯¦è§£é¿`è’™NEXTæ•°å—½{‘Öå’Œè¯ä¹¦æœºåˆ?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[4] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">å¼€æºIMèŠå¤©½E‹åºHarmonyChatåQšåŸºäºŽé¿`è’™NEXTçš„WebSocketåè®®</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[5] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信¾U¯è¡€é¸¿è’™ç‰ˆæ£å¼å‘布,295天走完微ä¿?4òq´æŠ€æœ¯ä¹‹è·¯ï¼</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[6] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">åÏx—¶é€šè®¯æ¡†æž¶MobileIMSDKçš„é¿`è’™NEXT端详¾l†ä»‹¾l?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[7] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">åÏx—¶é€šè®¯æ¡†æž¶MobileIMSDKçš„é¿`è’™NEXT端开å‘者手å†?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[8] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">拥抱国äñ”化:转è{APPçš„é¿`è’™NEXT端开å‘å°é²œä¹‹æ—?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[9] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信Windows端IMæ¶ˆæ¯æ•°æ®åº“的优化实践åQšæŸ¥è¯¢æ…¢ã€ä½“¿U¯å¤§ã€æ–‡ä»¶æŸåç‰</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[10] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信技术分享:æç§˜å¾®ä¿¡åŽå°å®‰å…¨ç‰¹å¾æ•°æ®ä»“库的架构设è®?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[11] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">IMè·¨åã^å°æŠ€æœ¯å¦ä¹?ä¹?åQšå…¨é¢è§£å¯†æ–°QQ桌é¢ç‰ˆçš„Electron内å˜ä¼˜åŒ–实践</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[12] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">ä¼ä¸šå¾®ä¿¡é’ˆå¯¹ç™¾ä¸‡¾U§ç»„¾l‡æž¶æž„的客户端性能优化实践</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[13] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">æç§˜ä¼ä¸šå¾®ä¿¡æ˜¯å¦‚何支æŒè¶…大规模IM¾l„织架构çš?#8212;—技术解è¯Õd››¾l´å…³¾p»é“¾</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[14] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分äínåQšè¯¦è§£iOS版微信视频å·ç›´æ’ä¸å› å¸§çŽ‡å¼‚å¸¸å¯ÆD‡´çš„功耗问é¢?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[15] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分äínåQšå¾®ä¿¡åŽç«¯æ“v釿•°æ®æŸ¥è¯¢ä»Ž1000msé™åˆ°100ms的技术实è·?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[16] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">大型IMå·¥ç¨‹é‡æž„实践åQšä¼ä¸šå¾®ä¿¡Androidç«¯çš„é‡æž„之èµ\</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[17] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">IM技术干货:å‡å¦‚ä½ æ¥è®¾è®¡å¾®ä¿¡çš„群èŠï¼Œä½ 该怎么设计åQ?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[18] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">微信团队分äínåQšæ¥çœ‹çœ‹å¾®ä¿¡åå¹´å‰çš„IMæ¶ˆæ¯æ”¶å‘æž¶æž„åQŒä½ åšåˆ°äº†å—</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[19] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">æ€ÀL˜¯è¢«ä½Žä¼ŽÍ¼Œä»Žæœªè¢«è¶…‘Šï¼Œæç§˜QQæžè‡´ä¸æ»‘背åŽçš„ç¡¬æ ¸IM技术优åŒ?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[20] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">首次公开åQŒæœ€æ–°æ‰‹æœºQQ客户端架构的技术演˜q›å®žè·?/a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;">[21] <a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">大型IM½E›_®šæ€§ç›‘‹¹‹å®žè·µï¼šæ‰‹Q客户端性能防劣化系¾lŸçš„廸™®¾ä¹‹èµ\</a></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: #ffffff;"><br /><a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">åQˆæœ¬æ–‡å·²åŒæ¥å‘布于:http://www.52im.net/thread-4821-1-1.htmlåQ?/a></p><img src ="http://www.aygfsteel.com/jb2011/aggbug/451622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jb2011/" target="_blank">Jack Jiang</a> 2025-05-19 11:24 <a href="http://www.aygfsteel.com/jb2011/archive/2025/05/19/451622.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>åˆ›å¾æ•°æ®é›†çš„èµ„æº http://www.aygfsteel.com/paulwong/archive/2025/05/18/451621.htmlpaulwong paulwong Sun, 18 May 2025 00:01:00 GMT http://www.aygfsteel.com/paulwong/archive/2025/05/18/451621.html http://www.aygfsteel.com/paulwong/comments/451621.html http://www.aygfsteel.com/paulwong/archive/2025/05/18/451621.html#Feedback 0 http://www.aygfsteel.com/paulwong/comments/commentRss/451621.html http://www.aygfsteel.com/paulwong/services/trackbacks/451621.html
AI æ•°æ®é›†ç”Ÿæˆå’Œæ¨¡åž‹å¾®è°ƒæ¡†æž¶ Distilabel 入门指å—åQšåŸºæœ¬æ¦‚å¿üc€å®‰è£…与快速开å§?/div>
]]>
å…¨åã^å°å¼€æºå³æ—‰™€šè®¯IMèŠå¤©æ¡†æž¶MobileIMSDKçš„æœåŠ¡ç«¯å¼€å‘æŒ‡å—,支æŒé¸¿è’™NEXT http://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.htmlJack Jiang Jack Jiang Thu, 15 May 2025 04:27:00 GMT http://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.html http://www.aygfsteel.com/jb2011/comments/451618.html http://www.aygfsteel.com/jb2011/archive/2025/05/15/451618.html#Feedback 0 http://www.aygfsteel.com/jb2011/comments/commentRss/451618.html http://www.aygfsteel.com/jb2011/services/trackbacks/451618.html 阅读全文 ]]> 强化å¦ä¹ èµ„æº http://www.aygfsteel.com/paulwong/archive/2025/04/30/451616.htmlpaulwong paulwong Wed, 30 Apr 2025 06:15:00 GMT http://www.aygfsteel.com/paulwong/archive/2025/04/30/451616.html http://www.aygfsteel.com/paulwong/comments/451616.html http://www.aygfsteel.com/paulwong/archive/2025/04/30/451616.html#Feedback 0 http://www.aygfsteel.com/paulwong/comments/commentRss/451616.html http://www.aygfsteel.com/paulwong/services/trackbacks/451616.html 蘑è‡ä¹¦EasyRL
æŽå®æ¯…è€å¸ˆçš„《深度强化å¦ä¹ 》是强化å¦ä¹ 领域¾lå…¸çš„ä¸æ–‡è§†é¢‘之一。æŽè€å¸ˆòq½é»˜é£Žè¶£çš„上è¯ùN£Žæ ÆD®©æ™¦æÓ†é𾿇‚的强化å¦ä¹ ç†è®ºå˜å¾—è½»æ¾æ˜“æ‡‚ï¼Œä»–ä¼šé€šè¿‡å¾ˆå¤šæœ‰è¶£çš„ä¾‹åæ¥è®²è§£å¼ºåŒ–å¦ä¹ ç†è®ºã€‚比如è€å¸ˆ¾l常会用çŽ?Atari 游æˆçš„ä¾‹åæ¥è®²è§£å¼ºåŒ–å¦ä¹ ½Ž—法。æ¤å¤–,ä¸ÞZº†æ•™ç¨‹çš„完整性,我们整ç†äº†å‘¨åšç£Šè€å¸ˆçš„《强化å¦ä¹ 纲è¦ã€‹ã€æŽ¿U‘浇è€å¸ˆçš„ã€Šä¸–ç•Œå† å†›å¸¦ä½ ä»Žé›¶å®žè·µå¼ºåŒ–å¦ä¹ 》以åŠå¤šä¸ªå¼ºåŒ–å¦ä¹ çš„¾lå…¸èµ„æ–™ä½œäØ“è¡¥å……ã€‚å¯¹äºŽæƒ³å…¥é—¨å¼ºåŒ–å¦ä¹ åˆæƒ³çœ‹ä¸æ–‡è®²è§£çš„人æ¥è¯´ç»å¯ÒŽ˜¯éžå¸¸æŽ¨èçš„ã€?br />
本教½E‹ä¹Ÿ¿UîCØ““蘑è‡ä¹?#8221;åQŒå¯“æ„æ˜¯å¸Œæœ›æ¤ä¹¦èƒ½å¤Ÿä¸ø™¯»è€…注入活力,让读è€?#8220;å?#8221;下这本蘑è‡ä¹‹åŽï¼Œèƒ½å¤Ÿé¥¶æœ‰å…´è‡´åœ°æŽ¢ç´¢å¼ºåŒ–å¦ä¹ ,åƒé©¬é‡Œå¥¥é‚£æ ·æ„ˆåŠ å¼ºå¤§åQŒç‘ôè€Œåœ¨äººå·¥æ™ø™ƒ½é¢†åŸŸè§…å¾—æ„外的收莗÷€?/div>
]]> å…¨åã^å°å¼€æºå³æ—‰™€šè®¯IM框架MobileIMSDKåQ?ç«?TCP/UDP/WebSocketåè®®åQŒé¿`è’™NEXT端已å‘布åQ?.7K Stars http://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.htmlJack Jiang Jack Jiang Tue, 29 Apr 2025 07:29:00 GMT http://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.html http://www.aygfsteel.com/jb2011/comments/451615.html http://www.aygfsteel.com/jb2011/archive/2025/04/29/451615.html#Feedback 0 http://www.aygfsteel.com/jb2011/comments/commentRss/451615.html http://www.aygfsteel.com/jb2011/services/trackbacks/451615.html 一ã€åŸºæœ¬ä»‹¾l?/h1>MobileIMSDK是一套全òq›_°åŽŸåˆ›å¼€æºIM通信层框æžÓž¼š
‘…è½»é‡çñ”ã€é«˜åº¦æç‚û|¼ŒlibåŒ?0KB以内åQ?/li> ¾_‘Ö¿ƒž®è£…åQŒä¸€å¥—APIåŒæ—¶æ”¯æŒUDPã€TCPã€WebSocket三ç§åè®®åQˆå¯èƒ½æ˜¯å…¨ç½‘唯一开æºçš„åQ‰ï¼› 客户端支æŒiOSã€Androidã€æ ‡å‡†Javaã€H5ã€å¾®ä¿¡å°½E‹åºã€Uniapã€é¿`è’™Next(Demo完整æºç )åQ?/li> æœåŠ¡ç«¯åŸºäºŽNettyåQŒæ€§èƒ½å“è¶Šã€æ˜“于扩å±?nbsp;newåQ?/li> å¯ä¸Žå§Šå¦¹å·¥ç¨‹ MobileIMSDK-Web æ— ç¼äº’通实现网™å늫¯èŠå¤©æˆ–推é€ç‰åQ?/li> å¯åº”用于跨设备ã€è·¨¾|‘络的èŠå¤©APPã€ä¼ä¸šOAã€æ¶ˆæ¯æŽ¨é€ç‰å„ç§åœºæ™¯ã€?/li> äºŒã€æºç ä»“åº“åŒæ¥æ›´æ–?/h1> GitHub.comåQ?/strong>
ç 云giteeåQ?/strong>
äº”ã€æŠ€æœ¯ç‰¹å¾?/h1> å…ã€æ¼”½Cºç¨‹åº?/h1>Android客户ç«?DemoåQ?/strong> ç‚ÒŽ¤å®‰è£…å’Œä‹Éç”?/a>åQ?/li> iOS客户ç«?DemoåQ?/strong> ç‚ÒŽ¤å®‰è£…å’Œä‹Éç”?/a>åQ?/li> Java客户ç«?DemoåQ?/strong> ç‚ÒŽ¤å®‰è£…å’Œä‹Éç”?/a>åQ?/li> H5客户ç«?DemoåQ?/strong> ç‚ÒŽ¤æŸ¥çœ‹ä»‹ç» åQ?/li>微信ž®ç¨‹åºç«¯ DemoåQ?/strong> ç‚ÒŽ¤æŸ¥çœ‹ä»‹ç» åQ?/li>Uniappç«?DemoåQ?/strong> ç‚ÒŽ¤æŸ¥çœ‹ä»‹ç» åQ?/li>鸿蒙Nextç«?DemoåQ?/strong> ç‚ÒŽ¤æŸ¥çœ‹ä»‹ç» newåQ?/li>æœåŠ¡ç«?DemoåQ?/strong> ç‚ÒŽ¤å®‰è£…å’Œä‹Éç”?/a>ã€?/li> 七ã€åº”用案ä¾?/h1> RainbowChat是一‹Æ‘ÖŸºäºŽMobileIMSDKçš„äñ”å“çñ”èŠå¤©APPåQŒæ›´å¤šè¯¦æƒ…: 点击下è²ä½“验 æˆ?nbsp;查看˜q行截图 ã€?/p>
① åŸÞZºŽMobileIMSDKçš„äñ”å“çñ”èŠå¤©APPåQ?/strong>
▶ è¯¦ç»†ä»‹ç» ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">下è²ä½“验 æˆ?nbsp;查看˜q行截图 ã€?/p>
② MobileIMSDK在高¾|‘络延迟下的案例åQ?/strong>
▶ æŸæ¬¾åŸÞZºŽMobileIMSDK的商业商å“,曾è¿è¥äºŽè·¨æ´²é™…çš„å¤æ‚¾|‘络环境下,端到端通信延迟在洲际网¾lœç¹å¿™æ—¶å¯é«˜è¾?00ms以上åQˆä¸ŽæœåŠ¡ç«¯çš„å•å‘延迟¾U¦äØ“300mså·¦å³åQŒè€Œé€šå¸¸å¤§å®¶è®‰K—®å›½å†…ä¸ÀLµé—¨æˆ·çš„åšg˜qŸçº¦ä¸?0~50msåQ‰ï¼ŒæŸæ®µæ—¶æœŸçš„éžæ•感˜qè¥æ•°æ® ç‚ÒŽ¤æŸ¥çœ‹ ã€?/p>
å…«ã€æ‰“包下载(all in oneåQ?/h1>说明åQ?/strong>最新å‘布版打包内容ä¸ï¼Œå·²åŒ…å«å®Œæ•´çš„demoæºç ã€sdkæºç ã€api文档ã€ç¼–译åŽçš„分å‘包½{‰ã€?/p>
ä¹ã€å…¸åž‹åº”用场æ™?/h1>场景1åQšèŠå¤©APP
应用说明åQ?/strong> å¯ç”¨äºŽå¼€å‘ç±»ä¼égºŽå¾®ä¿¡ã€QQ½{‰èŠå¤©å·¥å…—÷€?/p>
消æ¯èµ°å‘åQ?/strong> 需使用C2Cã€C2Sã€S2C全部¾cÕdž‹ã€?/p>
特别说明åQ?/strong> MobileIMSDKòq¶æœªå®šä¹‰èŠå¤©åº”用的应用层逻辑和å议,开å‘者å¯è‡ªè¡Œå®šä¹‰òq¶å®žçŽîC¹‹ã€?/p>
场景2åQšæ¶ˆæ¯æŽ¨é€?/strong>
应用说明åQ?/strong> å¯ç”¨äºŽéœ€è¦å‘客户端实时推é€ä¿¡æ¯çš„å„ç§¾cÕdž‹APPã€?/p>
消æ¯èµ°å‘åQ?/strong> 仅需使用S2C 1¿U消æ¯èµ°å‘,属MobileIMSDK的最½Ž€å•应用场景ã€?/p>
场景3åQšä¼ä¸šOA
应用说明åQ?/strong> å¯ç”¨äºŽå®žçŽîC¼ä¸šOA的指令ã€å…¬æ–‡ã€ç”³è¯ïL‰å„ç§æ¶ˆæ¯å®žæ—¶æŽ¨é€ï¼Œæžå¤§æå‡ç”¨æˆ·ä½“验åQŒåƈå¯åšg伸至¿UÕdŠ¨è®‘Ö¤‡ã€?/p>
消æ¯èµ°å‘åQ?/strong> 仅需使用S2C 1¿U消æ¯èµ°å‘,属MobileIMSDK的最½Ž€å•应用场景ã€?/p>
场景4åQšä¼ä¸šOA的增强型
应用说明åQ?/strong> å¯ç”¨äºŽå®žçŽîC¼ä¸šOAä¸å„¿Uç³»¾lŸçñ”ã€ç”¨æˆïLñ”消æ¯çš„实时互动,充分利用åÏx—¶é€šè®¯æŠ€æœ¯æå‡ä¼ ¾lŸOAçš„äh倹{€?/p>
消æ¯èµ°å‘åQ?/strong> å¯ä‹É用C2Cã€C2Sã€S2C全部¾cÕdž‹åQŒè¿™ä¸ŽèŠå¤©APP在很多方é¢å·²æ— 差别,但ä¼ä¸šOA有自已的用户关系½Ž¡ç†æ¨¡åž‹å’Œé€»è¾‘åQŒè¾ƒä¹‹å…¨åŠŸèƒ½èŠå¤©APPè¦ç®€å•的多ã€?/p>
åã€å¼€å‘指å?/h1>Androidå®¢æˆ·ç«¯å¼€å‘æŒ‡å—: ç‚ÒŽ¤æŸ¥çœ‹ åQ?/li>iOSå®¢æˆ·ç«¯å¼€å‘æŒ‡å—: ç‚ÒŽ¤æŸ¥çœ‹ åQ?/li>Javaå®¢æˆ·ç«¯å¼€å‘æŒ‡å—: ç‚ÒŽ¤æŸ¥çœ‹ åQ?/li>H5å®¢æˆ·ç«¯å¼€å‘æŒ‡å—: ç‚ÒŽ¤æŸ¥çœ‹ åQ?/li>微信ž®ç¨‹åºç«¯å¼€å‘指å—: ç‚ÒŽ¤æŸ¥çœ‹ åQ?/li>Uniappç«¯å¼€å‘æŒ‡å—: ç‚ÒŽ¤æŸ¥çœ‹ åQ?/li>鸿蒙Nextç«¯å¼€å‘æŒ‡å—: ç‚ÒŽ¤æŸ¥çœ‹ åQ?/li>Serverç«¯å¼€å‘æŒ‡å—: ç‚ÒŽ¤æŸ¥çœ‹ ã€?/li>附录1åQšDemo截图
1ã€åœ¨é¸¿è’™Next端è¿è¡Œæ•ˆæžœï¼š
>> ¾~–译和è¿è¡Œï¼šæŸ¥çœ‹é¸¿è’™Next端Demo完整æºç ã€?/p>
2ã€Android端ã€iOS端è¿è¡Œæ•ˆæž?/strong>
>> 安装和ä‹É用:˜q›å…¥Android版Demo帮助™å?/a>ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">˜q›å…¥iOS版Demo帮助™å?/a>ã€?/p>
>> 安装和ä‹É用: ˜q›å…¥Java版Demo帮助™å?/a>ã€?/p>
>> 安装和ä‹É用: ˜q›å…¥Java版Demo帮助™å?/a>ã€?/p>
8.1åQ‰MobileIMSDK-Web在手机端‹¹è§ˆå™¨è¿è¡Œæ•ˆæžœï¼šåQˆå¦‚何获å–MobileIMSDK-Web版: ç‚ÒŽ¤˜q›å…¥ åQ?/p>
8.2åQ‰MobileIMSDK-Web在PC端æµè§ˆå™¨˜q行效果åQšï¼ˆå¦‚何获å–MobileIMSDK-Web版:ç‚ÒŽ¤˜q›å…¥ åQ?/p>
附录2åQšåŸºäºŽMobileIMSDK的全功能IMã€æ¡ˆä¾‹ã€?/span>
>> 关于RainbowChat的更多资料请è§ï¼š RainbowChatå‰ç«¯APP功能截图¾|‘页 åQ?span style="color: #ff00ff;">* 推è - 真机实æ‹è§†é¢‘åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">Andriodç«?/a>ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">iOSç«?/a>åQ‰ã€?/p>
附录3åQšåŸºäºŽMobileIMSDK-Web的网™å늫¯IM¾pÈ»Ÿã€æ¡ˆä¾‹ã€?/strong>
下图为RainbowChat-Webçš„ä¸»ç•Œé¢ åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图ç‚ÒŽ¤˜q›å…¥ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频ç‚ÒŽ¤˜q›å…¥åQ‰ï¼š
下图为RainbowChat-Web的主界é¢[èŠå¤©½H—免屿—¶] åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图ç‚ÒŽ¤˜q›å…¥ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频ç‚ÒŽ¤˜q›å…¥åQ‰ï¼š
下图为RainbowChat-Web的主界é¢[独立UI效果] åQ?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多截图ç‚ÒŽ¤˜q›å…¥ã€?a target="_blank" rel="noopener nofollow" style="color: #1d58d1; text-decoration-line: none;">更多演示视频ç‚ÒŽ¤˜q›å…¥åQ‰ï¼š