{"id":1006,"date":"2026-08-21T10:20:54","date_gmt":"2026-08-21T10:20:54","guid":{"rendered":"https:\/\/boochlin.com\/?p=1006"},"modified":"2026-08-21T10:20:54","modified_gmt":"2026-08-21T10:20:54","slug":"android-%e7%88%9b%e8%a3%9d%e7%bd%ae%e6%83%b3%e8%b7%91%e4%ba%ba%e8%87%89%e8%be%a8%e8%ad%98-%e7%95%aa%e5%a4%96%e7%af%87-%e5%be%9e-50ms-%e5%88%b0-3ms%ef%bc%9aarm-neon%e3%80%81fastcv-%e8%88%87%e8%a8%98","status":"publish","type":"post","link":"https:\/\/boochlin.com\/?p=1006","title":{"rendered":"Android \u721b\u88dd\u7f6e\u60f3\u8dd1\u4eba\u81c9\u8fa8\u8b58 \u756a\u5916\u7bc7 &#8211; \u5f9e 50ms \u5230 3ms\uff1aARM NEON\u3001FastCV \u8207\u8a18\u61b6\u9ad4\u6975\u9650\u69a8\u6c41\u6307\u5357"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote\">\n<p><strong>\u300c\u5728\u767e\u5143\u7d1a\u721b\u6a5f\u5668\u4e0a\u641e AI\uff0c\u6700\u9ad8\u5883\u754c\u4e0d\u662f\u628a\u6a21\u578b\u780d\u5230\u8a8d\u4e0d\u51fa\u4eba\uff0c\u800c\u662f\u5225\u8b93 CPU \u7ad9\u5728\u8a18\u61b6\u9ad4\u9580\u53e3\u4e7e\u7b49 150 \u500b\u6642\u8108\u3002\u300d<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p>\u5728\u7cfb\u5217\u6587\u7b2c 0 \u7bc7 <a href=\"https:\/\/boochlin.com\/?p=401\" target=\"_blank\" rel=\"noreferrer noopener\">\u3008\u5230\u5e95\u6709\u591a\u721b\uff1f\u3009<\/a> \u88e1\u6211\u8b1b\u904e\uff0c\u6211\u5011\u624b\u4e0a\u662f\u4e00\u9846 2019 \u5e74\u7684\u9ad8\u901a\u9a4d\u9f8d QM215\uff084 \u9846 1.3GHz A53\u3001\u7121 NPU\u3001\u5be6\u9ad4 2GB RAM\uff09\u3002\u958b\u6a5f\u7cfb\u7d71\u5403 1.3GB\uff0c\u76f8\u6a5f\u5403 950MB\uff0cAI \u5403 300MB\uff0c\u7e3d\u5171 3,180MB \u76f4\u63a5\u628a 2GB \u8a18\u61b6\u9ad4\u6253\u7206\uff0cCPU \u9577\u671f 90% \u6eff\u8f09\uff0c\u5237\u500b\u81c9\u8981\u7b49 1.5 \u79d2\u3002<\/p>\n\n\n\n<p>\u7b2c 1 \u7bc7 <a href=\"https:\/\/boochlin.com\/?p=461\" target=\"_blank\" rel=\"noreferrer noopener\">\u3008\u9084\u6c92\u8a55\u4f30\uff0c\u5225\u8ac7\u512a\u5316\u3009<\/a> \u6211\u5011\u7528 <code>dumpsys meminfo<\/code> \u6293\u51fa\u5168\u6a5f\u53ea\u5269 64MB \u53ef\u7528\uff0c\u96a8\u6642\u6e96\u5099\u66b4\u6583\u3002<\/p>\n\n\n\n<p>\u5f88\u591a\u4eba\u9047\u5230\u9019\u7a2e\u5361\u9813\uff0c\u7b2c\u4e00\u4ef6\u4e8b\u5c31\u662f\u5435\u8457\u8981\u63db\u6676\u7247\u6216\u5acc AI \u592a\u91cd\u3002\u4f46\u639b\u4e0a Profiler \u6293\u706b\u7130\u5716\uff0c\u4f60\u6703\u770b\u5230\u4e00\u500b\u6975\u5ea6\u8af7\u523a\u7684\u771f\u76f8\uff1a<br><strong>CPU \u6709\u8d85\u904e\u4e03\u6210\u7684\u6642\u9593\u6839\u672c\u6c92\u5728\u7b97\u6578\u5b78\uff0c\u800c\u662f\u5728\u90a3\u88e1\u4e7e\u7b49\u8a18\u61b6\u9ad4\u628a\u8cc7\u6599\u9001\u904e\u4f86\uff08Memory Stall\uff09\uff01<\/strong><\/p>\n\n\n\n<p>\u6211\u5011\u505a\u7684\u662f\u5c08\u7528\u9580\u7981\u6a5f\uff0c<strong>\u300c\u958b\u6a5f\u6162\u500b\u5341\u5e7e\u79d2\u5b8c\u5168\u7121\u6240\u8b02\uff0c\u4f46\u958b\u6a5f\u5f8c\u5fc5\u9808 200ms \u79d2\u958b\u9580\u3001\u4e14\u9023\u7e8c\u8dd1\u4e00\u5e74\u4e0d\u51c6 OOM\u300d<\/strong>\u3002<\/p>\n\n\n\n<p>\u9019\u7bc7\u756a\u5916\u7bc7\u5c07\u524d\u7f6e\u7406\u8ad6\u6fc3\u7e2e\u5230\u6975\u81f4\uff0c\u91cd\u9ede\u653e\u5728\uff1a<strong>\u771f\u5be6\u5c08\u6848\u4e2d 4 \u5927\u52d5\u5200\u9ede\u7684\u53d6\u6368\u5168\u666f\uff0c\u4ee5\u53ca\u5982\u4f55\u7528 Post 1 \u7684\u5100\u8868\u677f\u505a\u5168\u93c8\u8def\u6210\u679c\u9a57\u6536\uff01<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001 \u6975\u901f\u7406\u8ad6\uff1a\u8a18\u61b6\u9ad4\u7246\u3001<code>vld4q<\/code> \u8207 A53 \u8abf\u6821\u7cbe\u8981<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u8a18\u61b6\u9ad4\u6392\u5e03\uff08SoA vs AoS\uff09\uff1a20 \u500d\u8b80\u53d6\u5dee\u8ddd<\/h3>\n\n\n\n<p>Cortex-A53 \u8b80 L1 \u5feb\u53d6\u53ea\u8981 <strong>1 ~ 3 \u6642\u8108<\/strong>\uff0c\u8b80 DRAM \u8981\u7b49 <strong>150 ~ 200 \u6642\u8108<\/strong>\u3002<\/p>\n\n\n\n<ul>\n<li><strong>\u50b3\u7d71\u7269\u4ef6\u5beb\u6cd5\uff08AoS\uff09<\/strong>\uff1aJava \u5806 <code>new Point[307200]<\/code>\uff0c30.7 \u842c\u500b\u7269\u4ef6\u6563\u843d\u5404\u8655\uff0cCache Miss \u7834 40%\uff0c\u7d14\u7b49\u8a18\u61b6\u9ad4\u8017\u8cbb <strong>15 ~ 20ms<\/strong>\u3002<\/li>\n\n\n\n<li><strong>\u9023\u7e8c\u5e73\u9762\u6392\u5e03\uff08SoA\uff09<\/strong>\uff1aNative \u914d\u7f6e <code>float[1228800]<\/code>\uff0c\u547d\u4e2d 64-byte Cache Line \u9810\u53d6\uff0c<strong>\u8b80\u53d6\u6642\u9593\u964d\u5230 0.8ms\uff08\u63d0\u901f 20 \u500d\uff09<\/strong>\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u6676\u7247\u786c\u9ad4\u5206\u6d41\u8207\u5de5\u5177\u9078\u578b<\/h3>\n\n\n\n<ul>\n<li><strong><code>vld4q_f32<\/code><\/strong>\uff1aARM \u6676\u5713\u5167\u5efa\u4ea4\u53c9\u5206\u6d41\u96fb\u8def\uff08Crossbar Switch\uff09\uff0c1 \u689d\u6307\u4ee4\u5b8c\u6210 64 bytes \u8f09\u5165\u4e26\u81ea\u52d5\u5206\u6d41\u5230 4 \u500b 128-bit \u66ab\u5b58\u5668\uff1b\u642d\u914d\u725b\u9813\u903c\u8fd1\u958b\u65b9\uff08<code>vrsqrteq_f32<\/code>\uff09\uff0c\u89e3\u7b97\u8017\u6642\u7531 <strong>3.54ms \u58d3\u81f3 0.29ms\uff08\u63d0\u901f 12 \u500d\uff09<\/strong>\u3002<\/li>\n\n\n\n<li><strong>\u9078\u578b\u539f\u5247<\/strong>\uff1a\u6a19\u6e96\u76f8\u6a5f\u64cd\u4f5c\uff08YUV \u8f49\u78bc\uff09\u9078 <strong>Qualcomm FastCV<\/strong>\uff08\u652f\u63f4 DSP \u5378\u8f09\uff0c\u4e0d\u91cd\u9020\u8f2a\u5b50\uff09\uff1b\u81ea\u7814\u7279\u898f\u6f14\u7b97\u6cd5\uff08Sony ToF 4 \u76f8\u4f4d\u89e3\u8abf\uff09\u9078 <strong>\u624b\u5beb ARM NEON<\/strong>\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. QM215\uff08Cortex-A53\uff09\u56db\u5927\u5fae\u67b6\u69cb\u69a8\u6c41\u8853<\/h3>\n\n\n\n<ol>\n<li><strong>32KB L1 \u884c\u7d1a\u7b97\u5b50\u878d\u5408\uff08Fused Kernel\uff09<\/strong>\uff1a\u4e00\u884c 640 \u9ede\uff082.5KB\uff09\u5168\u5728 L1 \u5feb\u53d6\u8dd1\u5b8c\u300c\u8b80\u5165 \u2192 \u67e5\u8868 \u2192 \u958b\u65b9 \u2192 3D \u6295\u5f71\u300d\uff0c\u6d88\u6ec5 3 \u6b21 4.9MB DRAM \u6c96\u5237\u3002<\/li>\n\n\n\n<li><strong>A53 \u96d9\u767c\u5c04\u6307\u4ee4\u4ea4\u932f\uff08Dual-Issue\uff09<\/strong>\uff1a\u5c07 <code>vld4q<\/code>\uff08Load\uff09\u8207 <code>vmulq<\/code>\uff08Math\uff09\u4ea4\u932f\u7de8\u6392\uff0c\u89f8\u767c Slot 0 + Slot 1 \u4e26\u884c\uff0cIPC \u7ffb\u500d\u3002<\/li>\n\n\n\n<li><strong>\u5c55\u958b\u6b65\u9577 2x ~ 4x<\/strong>\uff1a\u6d3b\u8e8d\u66ab\u5b58\u5668\u63a7\u5236\u5728 20 \u500b\u4ee5\u5167\uff0c\u675c\u7d55 Stack \u6ea2\u51fa\uff08Register Spilling\uff09\u3002<\/li>\n\n\n\n<li><strong>4 \u6838\u5fc3\u5c08\u6838\u7d81\u5b9a\uff08CPU Affinity\uff09<\/strong>\uff1aCore 0\uff08UI\/\u7cfb\u7d71\uff09\u3001Core 1\uff08RGB\/FastCV\uff09\u3001Core 2\uff08ToF\/NEON\uff09\u3001Core 3\uff08AI\/ACL\uff09\u3002<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001 \u5c08\u6848\u843d\u5730\u5be6\u9304\uff1a\u624b\u4e0a\u624b\u7a3f\u7684 4 \u5927\u52d5\u5200\u9ede\u8207\u53d6\u6368\u771f\u76f8<\/h2>\n\n\n\n<p>\u771f\u5be6\u5de5\u696d\u754c\u7684\u5de5\u7a0b\u6c7a\u7b56\u5f9e\u4f86\u4e0d\u662f\u76f2\u76ee\u70ab\u6280\uff0c\u800c\u662f\u7cbe\u7b97 ROI \u8207\u9632\u5d29\u6f70\u908a\u754c\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. ToF 3D \u9ede\u96f2\u89e3\u7b97\uff08<code>TofRawToDepthNeon.cpp<\/code>\uff09<\/h3>\n\n\n\n<ul>\n<li><strong>\u6c7a\u7b56<\/strong>\uff1a<strong>\u3010100% \u72c2\u66b4\u4f7f\u7528 NEON \u5411\u91cf\u5316 + Atan2 \u67e5\u8868\u3011<\/strong><\/li>\n\n\n\n<li><strong>\u70ba\u4ec0\u9ebc\u4e00\u5b9a\u8981\u7528\uff1f<\/strong><br>\u9019\u662f\u6574\u53f0\u9580\u7981\u6a5f\u6bcf\u79d2\u8dd1 30 \u6b21\u7684\u6b7b\u7a74\u3002\u539f\u672c\u7d14 C++ \u9010\u9ede\u89e3\u7b97\u4e00\u5f35\u5716\u8981\u5403\u6389\u6574\u6574 <strong>50ms<\/strong>\uff08\u9580\u7981\u6a5f\u76f4\u63a5\u5361\u6b7b\u5728 20fps \u4ee5\u4e0b\uff09\uff0cBCTC \u6d3b\u9ad4\u9632\u507d\u76f4\u63a5\u7834\u7522\u3002<\/li>\n\n\n\n<li><strong>\u843d\u5730\u6210\u679c<\/strong>\uff1a<br>\u5229\u7528 <code>vld4q_f32<\/code> 4-Lane \u81ea\u52d5\u5206\u6d41\u3001Atan2 \u4e5d\u4e5d\u4e58\u6cd5\u8868\u8207\u725b\u9813\u958b\u65b9\uff0cSony RAW12 \u8f49 3D \u9ede\u96f2\u8207 IR \u5f71\u50cf\u7684\u8017\u6642<strong>\u5f9e 50ms \u66b4\u964d\u81f3 3ms\uff08\u63d0\u901f 16 \u500d\uff09<\/strong>\uff0c\u70ba\u5f8c\u7e8c AI \u8fa8\u8b58\u6436\u4e0b 47ms \u7684\u9ec3\u91d1\u7b97\u529b\uff01<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u76f8\u6a5f YUV \u683c\u5f0f\u8f49\u63db\uff08<code>CameraRgbHelpler.java<\/code>\uff09<\/h3>\n\n\n\n<ul>\n<li><strong>\u6c7a\u7b56<\/strong>\uff1a<strong>\u3010\u4e3b\u8def\u5f91\u7528 <code>QFastCV<\/code>\uff0c\u4f46\u5099\u63f4\u8def\u5f91\u523b\u610f\u300c\u4e0d\u5beb NEON\u300d\u3011<\/strong><\/li>\n\n\n\n<li><strong>\u70ba\u4ec0\u9ebc\u4e3b\u8def\u5f91\u8981\u7528\uff1f<\/strong><br>Camera2 API \u5410\u51fa\u4f86\u7684 YUV \u5e36\u6709\u786c\u9ad4 Padding\uff08\u5bec\u5ea6 640 \u4f46 Stride \u662f 672\uff09\uff0c\u6bcf\u79d2 30 \u5e40\u5728 Java \u9010 byte \u642c\u904b\u6703\u5403\u6389 <strong>15ms<\/strong>\u3002\u547c\u53eb <code>QFastCV.yuv420SPToYuv420P<\/code> \u5728 Native \u79d2\u62c6 UV \u5206\u91cf\uff0c<strong>\u8017\u6642\u76f4\u63a5\u964d\u5230 1.5ms<\/strong>\u3002<\/li>\n\n\n\n<li><strong>\u70ba\u4ec0\u9ebc\u5099\u63f4\u8def\u5f91\uff08<code>yuv420888toNV21<\/code>\uff09\u6700\u5f8c\u9078\u64c7\u4fdd\u7559\u7d14 Java\uff1f<\/strong><br><strong>\u5099\u63f4\u8def\u5f91\u7684\u6838\u5fc3\u4f7f\u547d\u662f\u300c\u4fdd\u5e95\u9632\u5d29\u6f70\uff08Fail-safe\uff09\u300d<\/strong>\u3002\u5b83\u53ea\u5728 FastCV \u521d\u59cb\u5316\u5931\u6557\u6216\u9047\u5230\u7570\u5e38\u89e3\u6790\u5ea6\u6642\u89f8\u767c\u3002\u5982\u679c\u5099\u63f4\u8def\u5f91\u4e5f\u5beb\u5e95\u5c64 NEON\uff0c\u842c\u4e00\u6307\u91dd\u8d8a\u754c\u5674\u51fa <code>SIGSEGV<\/code> \u9583\u9000\uff0c\u5099\u63f4\u6a5f\u5236\u5c31\u5fb9\u5e95\u5931\u53bb\u610f\u7fa9\u3002\u4fdd\u7559\u7d14 Java \u96d6\u7136\u8981\u82b1 20ms\uff0c\u4f46\u4fdd\u8b49\u7cfb\u7d71 100% \u4e0d\u6b7b\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. 1:N \u842c\u4eba\u7279\u5fb5\u6bd4\u5c0d\uff08<code>NesFeatureMatcher.java<\/code>\uff09<\/h3>\n\n\n\n<ul>\n<li><strong>\u6c7a\u7b56<\/strong>\uff1a<strong>\u3010100% \u4f7f\u7528 ARM \u5b98\u65b9 ACL \u51fd\u5f0f\u5eab\uff0c\u4e0d\u81ea\u5df1\u624b\u5beb SGEMM\u3011<\/strong><\/li>\n\n\n\n<li><strong>\u70ba\u4ec0\u9ebc\u8981\u7528\uff1f<\/strong><br>10,000 \u4eba\u81c9 \u00d7 512 \u7dad\u7279\u5fb5 = 512 \u842c\u6b21\u6d6e\u9ede\u4e58\u52a0\u3002\u7528 Java \u8dd1\u8981 <strong>40 ~ 60ms<\/strong>\uff08\u5237\u81c9\u6703\u6709\u660e\u986f\u505c\u9813\u611f\uff09\u3002<\/li>\n\n\n\n<li><strong>\u70ba\u4ec0\u9ebc\u4e0d\u624b\u5beb\u5f59\u7de8\uff1f<\/strong><br>ARM \u5b98\u65b9\u5718\u968a\u82b1\u4e86\u5341\u5e74\u628a Cortex-A53 \u7684\u77e9\u9663\u4e58\u6cd5\u5206\u584a\u8207\u5feb\u53d6\u9810\u53d6\u8abf\u6821\u5230\u6975\u81f4\u3002\u6211\u5011\u76f4\u63a5\u63a5\u5165 <strong><code>aclsdk<\/code>\uff08Arm Compute Library\uff09<\/strong>\uff0c\u8abf\u7528 SGEMM \u6838\u5fc3\uff08<code>cachedNesMatch<\/code>\uff09\uff0c<strong>\u5728 1ms \u5167\u79d2\u6bba 1 \u842c\u4eba\u6bd4\u5c0d<\/strong>\u3002\u6210\u719f\u67b6\u69cb\u5e2b\u7d55\u4e0d\u70ba\u4e86\u70ab\u6280\u53bb\u91cd\u9020\u8f2a\u5b50\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. \u842c\u4eba\u7279\u5fb5\u51b7\u958b\u6a5f\u8f09\u5165\uff08<code>UpgradeModelFeature.java<\/code>\uff09<\/h3>\n\n\n\n<ul>\n<li><strong>\u6c7a\u7b56<\/strong>\uff1a<strong>\u3010\u5b8c\u5168\u653e\u68c4 NEON\/mmap\uff0c\u63a1\u7528\u300c50 \u7b46\u6279\u6b21\u975e\u540c\u6b65\u300d\u3011<\/strong><\/li>\n\n\n\n<li><strong>\u70ba\u4ec0\u9ebc\u6700\u5f8c\u9078\u64c7\u300c\u4e0d\u7528\u300dNEON \u8207 mmap\uff1f<\/strong><br>\u7279\u5fb5\u5347\u7d1a\u53ea\u5728\u300cOTA \u7cfb\u7d71\u66f4\u65b0\u5f8c\u7684\u7b2c\u4e00\u6b21\u51b7\u958b\u6a5f\u300d\u767c\u751f\u4e00\u6b21\u3002\u300c\u9580\u7981\u6a5f\u958b\u6a5f\u6162\u5341\u5e7e\u79d2\u5b8c\u5168\u6c92\u95dc\u4fc2\u300d\uff0c\u5beb 500 \u884c\u6975\u6613\u8e29\u5230\u8a18\u61b6\u9ad4\u6d29\u6f0f\u7684 C++ <code>mmap<\/code> \u53bb\u7701\u958b\u6a5f\u7684 10 \u79d2\u662f\u8ca0 ROI\u3002\u6211\u5011\u5728 Java \u4ee3\u78bc\u88e1\u63a1\u7528\u6975\u7c21\u7b56\u7565\uff1a<code>if (upgradedFaceList.size() &gt; 50)<\/code>\uff0c\u6bcf 50 \u7b46\u6279\u6b21\u5beb\u5165\u4e00\u6b21\u8cc7\u6599\u5eab\u4e26\u975e\u540c\u6b65\u9935\u7d66 ACL\uff0c\u5b89\u5168\u3001\u7121\u8a18\u61b6\u9ad4\u8ca0\u64d4\u4e14\u8db3\u5920\u597d\u7528\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001 \u6210\u679c\u9a57\u6536\uff1a\u7528 Post 1 \u5100\u8868\u677f\u6aa2\u9a57\u5168\u93c8\u8def\u6230\u679c<\/h2>\n\n\n\n<p>\u4f9d\u7167\u7b2c 1 \u7bc7 <a href=\"https:\/\/boochlin.com\/?p=461\" target=\"_blank\" rel=\"noreferrer noopener\">\u3008\u9084\u6c92\u8a55\u4f30\uff0c\u5225\u8ac7\u512a\u5316\u3009<\/a> \u7684\u5de5\u5177\u7d44\uff0c\u6211\u5011\u9032\u884c\u4e86\u5168\u7dad\u5ea6\u7684\u6578\u64da\u9a57\u6536\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. <code>adb shell dumpsys meminfo<\/code>\uff08\u5168\u6a5f\u7e3d\u91cf\u9a57\u6536\uff09<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\u3010\u8abf\u6821\u524d\u3011\nTotal RAM: 1,909,104K\nUsed RAM:  1,503,496K (\u7cfb\u7d71 1.3G + \u93e1\u982d 950M + AI 300M\uff0c\u8a18\u61b6\u9ad4\u56b4\u91cd\u8d85\u8f09)\nFree RAM:     64,232K (\u7015\u5371\u771f\u7a7a\u5340\uff0c\u96a8\u6642 OOM)\nZRAM \/ KSM:\u983b\u7e41\u58d3\u7e2e\u63db\u9801\uff0cksmd \u6436\u4f54 20% CPU\n\n\u3010\u8abf\u6821\u5f8c\u3011\nTotal RAM: 1,909,104K\nUsed RAM:    770,120K (AOSP \u7626\u8eab\u81f3 450M + \u96f6\u62f7\u8c9d\u76f8\u6a5f 120M + \u7279\u5fb5\u5e38\u99d0 200M)\nFree RAM:  1,013,734K (\u53ef\u7528\u5be6\u9ad4\u8a18\u61b6\u9ad4\u7a81\u7834 1GB\uff0c\u5b89\u5168\u9918\u88d5\u8d85\u904e 50%\uff01)\nZRAM \/ KSM:KSM \u5fb9\u5e95\u95dc\u9589\u596a\u56de 20% CPU\uff0cZRAM \u50c5\u4f5c\u80cc\u666f\u4fdd\u5e95\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">2. <code>cat \/proc\/$PID\/smaps<\/code>\uff08\u8a18\u61b6\u9ad4\u986f\u5fae\u93e1\u9a57\u6536\uff09<\/h3>\n\n\n\n<p>\u6aa2\u67e5\u76f8\u6a5f DirectBuffer \u8207 1:N \u7279\u5fb5\u77e9\u9663\u6240\u5728\u7684 Anonymous \u8a18\u61b6\u9ad4\u6bb5\uff1a<\/p>\n\n\n\n<ul>\n<li><strong><code>Rss == Size<\/code> \u4e14 <code>Swap == 0 kB<\/code><\/strong>\uff1a\u78ba\u8a8d 4.9MB \u7de9\u885d\u5340 100% \u7559\u5728\u5be6\u9ad4 RAM\uff0c\u6c92\u6709\u4efb\u4f55\u4e00\u9801\u88ab\u63db\u51fa\u5230 ZRAM\u3002<\/li>\n\n\n\n<li><strong><code>VmFlags<\/code> \u6a19\u8a8c\u6aa2\u67e5<\/strong>\uff1a\u51fa\u73fe <strong><code>lo<\/code>\uff08Locked in RAM\uff09<\/strong> \u8207 <strong><code>un<\/code>\uff08Unmergeable\uff09<\/strong>\uff0c\u8b49\u660e <code>mlock()<\/code> \u8207 <code>madvise()<\/code> \u6210\u529f\u751f\u6548\uff0c\u5fb9\u5e95\u514d\u75ab ZRAM \u89e3\u58d3\u5c16\u5cf0\u8207 KSM \u5feb\u53d6\u6c61\u67d3\uff01<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. Android Studio Profiler\uff08GC \u983b\u7387\u8207\u706b\u7130\u5716\u8017\u6642\uff09<\/h3>\n\n\n\n<ul>\n<li><strong>GC Activity\uff08\u5783\u573e\u56de\u6536\uff09<\/strong>\uff1a\u5f9e\u6bcf\u79d2\u6578\u5341\u6b21\u5c0f\u578b GC \u92f8\u9f52\uff0c\u964d\u81f3 <strong>\u6bcf\u5206\u9418 0 \u6b21 GC\uff08\u4e00\u689d\u7b46\u76f4\u5e73\u7dda\uff09<\/strong>\uff0c\u8b49\u660e\u74b0\u5f62\u7de9\u885d\u6c60\u9054\u6210 100% \u96f6\u8a18\u61b6\u9ad4\u6296\u52d5\u3002<\/li>\n\n\n\n<li><strong>\u5168\u93c8\u8def\u8017\u6642\u5206\u6bb5\u9a57\u6536\uff0830fps \u5be6\u6e2c\uff09<\/strong>\uff1a\n<ul>\n<li>\u76f8\u6a5f YUV \u8f49\u78bc\uff08<code>CameraRgbHelpler<\/code>\uff09\uff1a15ms \u2192 <strong>1.5ms<\/strong><\/li>\n\n\n\n<li>ToF RAW12 \u8f49 3D \u9ede\u96f2\uff08<code>tofsdk<\/code>\uff09\uff1a50ms \u2192 <strong>3.0ms<\/strong><\/li>\n\n\n\n<li>1:N \u842c\u4eba\u7279\u5fb5\u77e9\u9663\u4e58\u6cd5\uff08<code>aclsdk<\/code>\uff09\uff1a40ms \u2192 <strong>1.0ms<\/strong><\/li>\n\n\n\n<li>AI \u6d3b\u9ad4\u8207\u4eba\u81c9\u5075\u6e2c\u63a8\u8ad6\uff1a<strong>240ms<\/strong><\/li>\n\n\n\n<li><strong>\u5168\u93c8\u8def\u7aef\u5230\u7aef\u7e3d\u8017\u6642<\/strong>\uff1a\u5f9e\u539f\u672c\u5361\u6b7b\u5d29\u6f70\u7684 <strong>1.5 \u79d2 \u2192 \u66b4\u964d\u81f3 280 \u6beb\u79d2<\/strong>\uff0c\u4ee5\u6975\u5927\u512a\u52e2\u901a\u904e BCTC \u589e\u5f37\u7d1a\u91d1\u878d\u8a8d\u8b49\uff01<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. 24\/7 \u9023\u7e8c\u58d3\u529b\u6e2c\u8a66<\/h3>\n\n\n\n<p>\u5728\u5ba4\u6eab 35\u00b0C \u70e4\u6a5f\u74b0\u5883\u4e0b\u9023\u7e8c\u904b\u884c 30 \u5929\uff1a<\/p>\n\n\n\n<ul>\n<li><strong>CPU \u7e3d\u8ca0\u8f09<\/strong>\uff1a\u7a69\u5b9a\u5728 <strong>35% ~ 40%<\/strong>\uff0c\u6676\u7247\u6eab\u5ea6\u4f4e\u65bc 55\u00b0C\uff0c\u5b8c\u5168\u4e0d\u89f8\u767c\u964d\u983b\u3002<\/li>\n\n\n\n<li><strong>\u7a69\u5b9a\u6027<\/strong>\uff1a\u9023\u7e8c 720 \u5c0f\u6642\u904b\u884c <strong>0 \u6b21 OOM\u30010 \u6b21\u9583\u9000\u30010 \u5e40\u6495\u88c2<\/strong>\uff01<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u53c3\u8003\u8cc7\u6599 (References)<\/h2>\n\n\n\n<ol>\n<li><strong>John L. Hennessy, David A. Patterson<\/strong>. <em>Computer Architecture: A Quantitative Approach<\/em> (6th Edition). Morgan Kaufmann, 2017.<\/li>\n\n\n\n<li><strong>Peter J. Denning<\/strong>. &#8220;The Locality Principle.&#8221; <em>Communications of the ACM (CACM)<\/em>, 2005.<br><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/1070838.1070856\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/dl.acm.org\/doi\/10.1145\/1070838.1070856<\/a><\/li>\n\n\n\n<li><strong>Wm. A. Wulf, Sally A. McKee<\/strong>. &#8220;Hitting the Memory Wall: Implications of the Obvious.&#8221; <em>ACM SIGARCH Computer Architecture News<\/em>, 1995.<br><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/216585.216588\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/dl.acm.org\/doi\/10.1145\/216585.216588<\/a><\/li>\n\n\n\n<li><strong>Ulrich Drepper<\/strong>. &#8220;What Every Programmer Should Know About Memory.&#8221; Red Hat, 2007.<br><a href=\"https:\/\/people.freebsd.org\/~lstewart\/articles\/cpumemory.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/people.freebsd.org\/~lstewart\/articles\/cpumemory.pdf<\/a><\/li>\n\n\n\n<li><strong>Mike Acton<\/strong>. &#8220;Data-Oriented Design and C++.&#8221; <em>CppCon 2014 Keynote<\/em>.<br><a href=\"https:\/\/github.com\/CppCon\/CppCon2014\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/CppCon\/CppCon2014<\/a><\/li>\n\n\n\n<li><strong>ARM Developer<\/strong>: <em>Cortex-A Series Programmer&#8217;s Guide for ARMv8-A (DEN0024A)<\/em> &amp; <em>NEON Programmer&#8217;s Guide (DEN0018A)<\/em>.<br><a href=\"https:\/\/developer.arm.com\/documentation\/den0018\/a\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.arm.com\/documentation\/den0018\/a\/<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u300c\u5728\u767e\u5143\u7d1a\u721b\u6a5f\u5668\u4e0a\u641e AI\uff0c\u6700\u9ad8\u5883\u754c\u4e0d\u662f\u628a\u6a21\u578b\u780d\u5230\u8a8d\u4e0d\u51fa\u4eba\uff0c\u800c\u662f\u5225\u8b93 CPU \u7ad9\u5728\u8a18\u61b6\u9ad4\u9580\u53e3\u4e7e\u7b49 150 \u500b\u6642 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1007,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1006"}],"collection":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1006"}],"version-history":[{"count":1,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1006\/revisions"}],"predecessor-version":[{"id":1008,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1006\/revisions\/1008"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/media\/1007"}],"wp:attachment":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}