4.8.0 单表列表 性能优化前后对比
经过 https://github.com/Tencent/APIJSON/commit/ed036ef025d26356d9af0f23d4a5970319748770 这次优化, 4.8.0 对比 4.7.2 在 Log.DEBUG = true(开启日志)的情况下:
TestRecord[] 耗时降低至原来 73%,性能提升 27% 至原来 1.3 倍; Moment[] 耗时降低至原来 80%,性能提升 20% 至原来 1.2 倍; 朋友圈列表耗时降低至原来 81%,性能提升 19% 至原来 1.2 倍。
其中每个数组都按 100 条来测试,如果每页数量更大或每项数据量更大,则提升会更加明显。
主要因为省掉了 AbstractObjectParser.onSQLExecute 878 行 for 循环 put 100 条数据(有日志) 3ms-8ms (MacBook Pro(13 英寸,2015 年初期)2.9 GHz Intel Core i5 16 GB 1867 MHz DDR3 MacOS 10.11.6 ) https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractObjectParser.java
以及 AbstractParser.onArrayParse 中用 1 次 addAll 替代 100 次 add 减少不必要的 ArrayList 频繁校验和扩容 https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractParser.java
è ¾è®¯ CSIG æé¡¹ç®æ§è½æµè¯ç»æ
1. æµè¯ç¯å¢
1.1 æºå¨é ç½®
è ¾è®¯äºtke docker podï¼ 4 æ ¸ / 16Gã
1.2 dbæºå¨é ç½®
è ¾è®¯äº8æ ¸32000MBå åï¼805GBåå¨ç©ºé´
1.3 æµè¯è¡¨å»ºè¡¨DMLãæ°æ®éï¼mysql 5.7ï¼
CREATE TABLE `t_xxxx_xxxx` (
`x_id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
`x_xxxx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xID',
`x_xid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxID',
`x_xx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xID',
`x_xxxx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxxID',
`x_xxxxx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxID',
`x_xxxx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxID',
`x_uin` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'xxuin',
`x_send_time` datetime DEFAULT NULL COMMENT 'æ¨éæ¶æ¯æ¶é´',
`x_xxxx_result` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxç»æ',
`x_xxx_xxxx_result` varchar(255) DEFAULT '' COMMENT 'xxç»æ',
`x_result` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '0é误 1æ£ç¡® 2æªè®¾ç½®',
`x_create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´, è½å°æ¶é´',
`x_credit` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxæ°é',
`x_xxxxxx_xxx_id` varchar(32) NOT NULL COMMENT 'å
Œ
±åæ°, 䏿¥åºç¨',
`x_xxxxxx_source` varchar(32) NOT NULL COMMENT 'å
Œ
±åæ°, 䏿¥æå¡å',
`x_xxxxxx_server` varchar(32) NOT NULL COMMENT 'å
Œ
±åæ°, 䏿¥æå¡ç«¯ip',
`x_xxxxxx_event_time` datetime NOT NULL COMMENT 'å
Œ
±åæ°, 䏿¥æ¶é´',
`x_xxxxxx_client` varchar(32) NOT NULL COMMENT 'å
Œ
±åæ°, 客æ·ç«¯ip',
`x_xxxxxx_trace_id` varchar(64) NOT NULL COMMENT 'å
Œ
±åæ°',
`x_xxxxxx_sdk` varchar(16) NOT NULL COMMENT 'å
Œ
±åæ°, sdkçæ¬',
PRIMARY KEY (`x_id`, `x_uin`),
UNIQUE KEY `udx_uid_xxxxid` (`x_uin`, `x_xxxx_id`),
KEY `idx_xid` (`x_xid`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = 'xxäºä»¶è¡¨';
-
æ°æ®éï¼18558903
-
mysqlçæ¬ï¼5.7
-
æ°æ®åå¸ï¼ä½¿ç¨group by ç»è®¡ï¼åºäºå ¶ä¸x_xidæ¥group byï¼å¾å°ä»¥ä¸è¡¨æ ¼ï¼
select x_xid, count(x_id) counter from t_xxxx_xxxx group by x_xid order by counter desc limit 10;
| x_xid | counter |
|---|---|
| xxxx36 | 696376 |
| xxxx38 | 418576 |
| xxxx63 | 384503 |
| xxxx40 | 372080 |
| xxxx41 | 301364 |
| xxxx08 | 248243 |
| xxxx46 | 223820 |
| xxxx07 | 220234 |
| xxxx44 | 207721 |
| xxxx02 | 152795 |
1.4 æ¥å¿æå°è®¾ç½®
Log.DEBUG = false;
AbstractParser.IS_PRINT_REQUEST_STRING_LOG = false;
AbstractParser.IS_PRINT_REQUEST_ENDTIME_LOG = false;
AbstractParser.IS_PRINT_BIG_LOG = false;
2. æµè¯èæ¬ (使ç¨Table[]: {Table: {}}æ ¼å¼)
èæ¬ç»è®¡æ¹å¼ï¼
-
åºäºlinux timeå½ä»¤è¾åºçrealtimeæ¥ç»è®¡ã
-
å2ä¸ªåºæ¯æµè¯ï¼ä¸ä¸ªä¸å¸¦whereæ¡ä»¶ãä¸ä¸ªå¸¦x_xid in (xxxx36,xxxx38)çæ¡ä»¶ï¼è¯¥æ¡ä»¶è½å¹é åº100W+æ°æ®ï¼æ¹ä¾¿è¦ç10W-100Wä¹é´ç任使°æ®éåºæ¯ï¼è¿éäºå ç¨
select x_xid, count(x_id) c from t_xxxx_xxxx group by x_xid order by c desc;è¿æ ·çè¯å¥å¯¹è¡¨åäºç»è®¡ï¼x_xid=xxxx36æ696376æ¡è®°å½ï¼x_xid=xxxx38æ418576æ¡è®°å½ã
èæ¬ï¼apitest.sh
#!/bin/bash
printf -- '--------------------------\nå¼å§ä¸å¸¦whereæ¡ä»¶çæ
嵿µè¯\n'
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":100000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 10w_no_where.log
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":200000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 20w_no_where.log
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":500000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 50w_no_where.log
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":800000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 80w_no_where.log
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":1000000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 100w_no_where.log
printf -- '--------------------------\nå¼å§å¸¦whereæ¡ä»¶çæ
嵿µè¯\n'
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":100000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 10w_with_where.log
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":200000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 20w_with_where.log
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":500000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 50w_with_where.log
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":800000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 80w_with_where.log
time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":1000000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 100w_with_where.log
ä¹å°±æ¯ MySQL 5.7 å ± 1.9KW è®°å½ç大表ï¼ç»è®¡ CRUL 10-20M/s ç½éä»å起请æ±å°æ¥æ¶å®åå çæ»æ¶é¿
| æ°é级 | 4.7.0(5次åå¹³åå¼) | 4.8.0(5次åå¹³åå¼) | æ¯å¦æ£å¸¸åå | whereæ¡ä»¶ | æ§è½æå |
|---|---|---|---|---|---|
| 10W | 1.739s | 1.159s | æ¯ | æ | 50%ãå³((1/1.159-1/1.739)/(1/1.739))*100% |
| 20W | 3.518s | 2.676s | æ¯ | æ | 31.5% |
| 50W | 9.257s | 6.952s | æ¯ | æ | 33.2% |
| 80W | 16.236s | 10.697s | -Xmx=3192Mæ¶æ æ³æ£å¸¸åå ï¼OOMé误ï¼è°å¤§-Xmxåæ°åokã | æ | 51.8% |
| 100W | 19.748s | 14.466s | -Xmx=3192Mæ¶æ æ³æ£å¸¸åå ï¼OOMé误ï¼è°å¤§-Xmxåæ°åok | æ | 36.5% |
| 10W | 1.928s | 1.392s | æ¯ | "x_xid{}":[xxxx36,xxxx38]ï¼è¦çæ°æ®è¶ è¿100Wæ°æ®ã | 38.5% |
| 20W | 4.149s | 2.852s | æ¯ | "x_xid{}":[xxxx36,xxxx38] | 45.5% |
| 50W | 10.652s | 7.231s | æ¯ | "x_xid{}":[xxxx36,xxxx38] | 47.3% |
| 80W | 16.975s | 12.465s | è°æ´äº-Xmx忣叏åå | "x_xid{}":[xxxx36,xxxx38] | 36.2% |
| 100W | 20.632s | 16.481s | è°æ´äº-Xmx忣叏åå | "x_xid{}":[xxxx36,xxxx38] | 25.2% |
è ¾è®¯ CSIG æé¡¹ç®æ§è½æµè¯ç»æ
1. æµè¯ç¯å¢
1.1 æºå¨é ç½®
è ¾è®¯äºtke docker podï¼ 4 æ ¸ / 16Gã
1.2 dbæºå¨é ç½®
è ¾è®¯äº8æ ¸32000MBå åï¼805GBåå¨ç©ºé´
1.3 æµè¯è¡¨å»ºè¡¨DMLãæ°æ®éï¼mysql 5.7ï¼
CREATE TABLE `t_xxxx_xxxx` ( `x_id` bigint(11) unsigned NOT NULL AUTO_INCREMENT, `x_xxxx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xID', `x_xid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxID', `x_xx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xID', `x_xxxx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxxID', `x_xxxxx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxID', `x_xxxx_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxID', `x_uin` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'xxuin', `x_send_time` datetime DEFAULT NULL COMMENT 'æ¨éæ¶æ¯æ¶é´', `x_xxxx_result` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxç»æ', `x_xxx_xxxx_result` varchar(255) DEFAULT '' COMMENT 'xxç»æ', `x_result` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '0é误 1æ£ç¡® 2æªè®¾ç½®', `x_create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´, è½å°æ¶é´', `x_credit` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'xxæ°é', `x_xxxxxx_xxx_id` varchar(32) NOT NULL COMMENT 'å ¬å ±åæ°, 䏿¥åºç¨', `x_xxxxxx_source` varchar(32) NOT NULL COMMENT 'å ¬å ±åæ°, 䏿¥æå¡å', `x_xxxxxx_server` varchar(32) NOT NULL COMMENT 'å ¬å ±åæ°, 䏿¥æå¡ç«¯ip', `x_xxxxxx_event_time` datetime NOT NULL COMMENT 'å ¬å ±åæ°, 䏿¥æ¶é´', `x_xxxxxx_client` varchar(32) NOT NULL COMMENT 'å ¬å ±åæ°, 客æ·ç«¯ip', `x_xxxxxx_trace_id` varchar(64) NOT NULL COMMENT 'å ¬å ±åæ°', `x_xxxxxx_sdk` varchar(16) NOT NULL COMMENT 'å ¬å ±åæ°, sdkçæ¬', PRIMARY KEY (`x_id`, `x_uin`), UNIQUE KEY `udx_uid_xxxxid` (`x_uin`, `x_xxxx_id`), KEY `idx_xid` (`x_xid`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = 'xxäºä»¶è¡¨';
- æ°æ®éï¼18558903
- mysqlçæ¬ï¼5.7
- æ°æ®åå¸ï¼ä½¿ç¨group by ç»è®¡ï¼åºäºå ¶ä¸x_xidæ¥group byï¼å¾å°ä»¥ä¸è¡¨æ ¼ï¼
select x_xid, count(x_id) counter from t_xxxx_xxxx group by x_xid order by counter desc limit 10;x_xid counter xxxx36 696376 xxxx38 418576 xxxx63 384503 xxxx40 372080 xxxx41 301364 xxxx08 248243 xxxx46 223820 xxxx07 220234 xxxx44 207721 xxxx02 152795
1.4 æ¥å¿æå°è®¾ç½®
Log.DEBUG = false; AbstractParser.IS_PRINT_REQUEST_STRING_LOG = false; AbstractParser.IS_PRINT_REQUEST_ENDTIME_LOG = false; AbstractParser.IS_PRINT_BIG_LOG = false;2. æµè¯èæ¬ (使ç¨Table[]: {Table: {}}æ ¼å¼)
èæ¬ç»è®¡æ¹å¼ï¼
- åºäºlinux timeå½ä»¤è¾åºçrealtimeæ¥ç»è®¡ã
- å2ä¸ªåºæ¯æµè¯ï¼ä¸ä¸ªä¸å¸¦whereæ¡ä»¶ãä¸ä¸ªå¸¦x_xid in (xxxx36,xxxx38)çæ¡ä»¶ï¼è¯¥æ¡ä»¶è½å¹é åº100W+æ°æ®ï¼æ¹ä¾¿è¦ç10W-100Wä¹é´ç任使°æ®éåºæ¯ï¼è¿éäºå ç¨
select x_xid, count(x_id) c from t_xxxx_xxxx group by x_xid order by c desc;è¿æ ·çè¯å¥å¯¹è¡¨åäºç»è®¡ï¼x_xid=xxxx36æ696376æ¡è®°å½ï¼x_xid=xxxx38æ418576æ¡è®°å½ãèæ¬ï¼apitest.sh
#!/bin/bash printf -- '--------------------------\nå¼å§ä¸å¸¦whereæ¡ä»¶çæ 嵿µè¯\n' time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":100000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 10w_no_where.log time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":200000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 20w_no_where.log time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":500000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 50w_no_where.log time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":800000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 80w_no_where.log time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":1000000, "T_xxxx_xxxx":{"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 100w_no_where.log printf -- '--------------------------\nå¼å§å¸¦whereæ¡ä»¶çæ 嵿µè¯\n' time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":100000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 10w_with_where.log time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":200000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 20w_with_where.log time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":500000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 50w_with_where.log time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":800000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 80w_with_where.log time curl -X POST -H 'Content-Type:application/json' 'http://x.xxx.xx.xxx:xxxx/get' -d '{"T_xxxx_xxxx[]":{"count":1000000, "T_xxxx_xxxx":{"x_xid{}":[xxxx36,xxxx38],"@column":"x_uin,x_send_time,x_xxxx_id,x_xid,x_xx_id,x_xxxxx_id,x_xxxx_result,x_result,x_credit"}}}' > 100w_with_where.logä¹å°±æ¯ MySQL 5.7 å ± 1.9KW è®°å½ç大表ï¼ç»è®¡ CRUL 10-20M/s ç½éä»å起请æ±å°æ¥æ¶å®åå çæ»æ¶é¿
æ°é级 4.7.0(5次åå¹³åå¼) 4.8.0(5次åå¹³åå¼) æ¯å¦æ£å¸¸åå whereæ¡ä»¶ æ§è½æå 10W 1.739s 1.159s æ¯ æ 50%ãå³((1/1.159-1/1.739)/(1/1.739))*100% 20W 3.518s 2.676s æ¯ æ 31.5% 50W 9.257s 6.952s æ¯ æ 33.2% 80W 16.236s 10.697s -Xmx=3192Mæ¶æ æ³æ£å¸¸åå ï¼OOMé误ï¼è°å¤§-Xmxåæ°åokã æ 51.8% 100W 19.748s 14.466s -Xmx=3192Mæ¶æ æ³æ£å¸¸åå ï¼OOMé误ï¼è°å¤§-Xmxåæ°åok æ 36.5% 10W 1.928s 1.392s æ¯ "x_xid{}":[xxxx36,xxxx38]ï¼è¦çæ°æ®è¶ è¿100Wæ°æ®ã 38.5% 20W 4.149s 2.852s æ¯ "x_xid{}":[xxxx36,xxxx38] 45.5% 50W 10.652s 7.231s æ¯ "x_xid{}":[xxxx36,xxxx38] 47.3% 80W 16.975s 12.465s è°æ´äº-Xmx忣叏åå "x_xid{}":[xxxx36,xxxx38] 36.2% 100W 20.632s 16.481s è°æ´äº-Xmx忣叏åå "x_xid{}":[xxxx36,xxxx38] 25.2%
以ä¹åç APIJSON 4.6.0 è¿æ¥ 2.3KW 大表带æ¡ä»¶æ¥åº 12W+ æ°æ®æ¥ä¼°è®¡ï¼ https://github.com/Tencent/APIJSON/releases/tag/4.6.0
---------- | ---------- | ---------- | ---------- | ------------- Total | Received | Time Total | Time Spent | Current Speed 72.5M | 72.5M | 0:00:05 | 0:00:05 | 20.0M
/get >> http请æ±ç»æ:5624
4.6.0-4.7.2 齿²¡æææ¾çæ§è½ä¼åï¼æä»¥ 4.7.0 åªè±äºçº¦ 2s åºè¯¥æ¯å 为æ¢äºå¼ 表ï¼å¹³åæ¯è¡æ°æ®éåå°äºçº¦ 65% ä¸ºåæ¥ç 35%ã APIJSON 4.6.0 æ¥åæ¥ 2.3KW å¤§è¡¨ä¸ 100W æ°æ®ææ°æ§è¡¨æ°æ®éæ¯ä¾ä¼°è®¡èæ¶ = 20.632s / 65% = 31.7sï¼ APIJSON 4.6.0 æ¥åæ¥ 2.3KW å¤§è¡¨ä¸ 100W æ°æ®æå表æ¥åºæ°æ®éæ¯ä¾ä¼°è®¡èæ¶ = 100W*72.5M/(12-13W)/(20M/s) = 27.9s-30.2sã
ä¸¤ç§æ¹å¼ä¼°ç®ç»æåºæ¬ä¸è´ï¼ä¹å¯ä»¥æè¿ä¸ª 35% æ°æ§è¡¨å¹³åæ¯è¡æ°æ®éæ¯ä¾ä¼°ç®æé¤ç½ç»èæ¶åçæ´ä¸ªæå¡èæ¶ï¼
APIJSON 4.6.0 æ¥åæ¥ 2.3KW å¤§è¡¨ä¸ 12W+ æ°æ®éæå¡èæ¶ = æ»èæ¶ 5.624s - æ°æ® 72.5M/ä¸è½½é度 20.0Mbps = 2.00sï¼ APIJSON 4.7.0 æ¥ç°å¨ 1.9KW å¤§è¡¨ä¸ 10W æ°æ®éæå¡èæ¶ = æ»èæ¶ 1.928s - æ°æ® 72.5M*35%(10/12)/(ä¸è½½é度 10-20.0Mbps) = 0.00-0.87sï¼ APIJSON 4.8.0 æ¥ç°å¨ 1.9KW å¤§è¡¨ä¸ 10W æ°æ®éæå¡èæ¶ = æ»èæ¶ 1.392s - æ°æ® 72.5M*35%(10/12)/(ä¸è½½é度 10-20.0Mbps) = 0.00-0.33sï¼éä½ 62%ï¼ APIJSON 4.7.0 æ¥ç°å¨ 1.9KW å¤§è¡¨ä¸ 100W æ°æ®éæå¡èæ¶ = æ»èæ¶ 20.632s - æ°æ® 725M*35%(10/12)/(ä¸è½½é度 10-20.0Mbps) = 0.00-10.06sï¼ APIJSON 4.8.0 æ¥ç°å¨ 1.9KW å¤§è¡¨ä¸ 100W æ°æ®éæå¡èæ¶ = æ»èæ¶ 16.481s - æ°æ® 725M*35%(10/12)/(ä¸è½½é度 10-20.0Mbps) = 0.00-5.91sï¼éä½ 41%ã
腾讯业务百万数据 6s 响应,APIJSON 性能优化背后的故事
https://my.oschina.net/tommylemon/blog/5375645
