1. è¿åº¦å°è£
使ç¨OOPæ¶ï¼ä¼æä¸äºå¤æçé®é¢åææ½è±¡æè¾ç®åçç¬ç«å¯¹è±¡ï¼éè¿å¯¹è±¡çäºç¸è°ç¨å»å®ç°æ¹æ¡ãä½æ¯ï¼ç±äºå¯¹è±¡å
å«èªå·±å°è£
çæ°æ®ï¼ä¸ä¸ªé®é¢çæ°æ®éä¼è¢«åæ£å¨ä¸åçå
ååºåãäºç¸è°ç¨æ¶å¾å¯è½ä¼åºç°æ°æ®çcache missçæ
åµã
2. å¤æ
å¨C++çä¸è¬çå¤æå®ç°ä¸ï¼ä¼ä½¿ç¨å°èå½æ°è¡¨ãèå½æ°è¡¨æ¯éè¿å å
¥ä¸æ¬¡é´æ¥å±æ¥å®ç°å¨ææ´¾éãä½å¨è°ç¨çæ¶åéè¦è¯»åèå½æ°è¡¨ï¼å¢å cache missçå¯è½æ§ãåºæ¬ä¸è¦æ¯æå¨ææ´¾éï¼æ 论ç¨èå½æ°è¡¨ãå½æ°æéé½ä¼å½¢æè¿ä¸ªé®é¢ï¼ä½å¦æç±»çæ°ç®æå¤ï¼æå½æ°æéå¦æåæ°æ®æ¾å¨ä¸èµ·ææ¶åå¯æ¾ç¼é®é¢ã
3. æ°æ®å¸å±
è½ç¶OOPæ¬èº«å¹¶æ éå¶æ°æ®çå¸å±æ¹å¼ï¼ä½åºæ¬ä¸ç»å¤§é¨åOOPè¯è¨é½æ¯ææååéè¿ç»å
裹å¨ä¸æ®µå
åä¸ãçè³ä½¿ç¨Cå»ç¼ç¨çæ¶åï¼ä¹é常ä¼ä½¿ç¨å°OOPæObject-basedçæèæ¹å¼ï¼æä¸äºç¸å
³çæ°æ®æ¾ç½®äºä¸ä¸ªstructä¹å
ï¼
å³ä½¿ä¸ä½¿ç¨å¤æï¼æ们å ä¹ä¸å æç´¢å°ä¼ä½¿ç¨è¿ç§æ°æ®å¸å±æ¹å¼ãæ们é常ä¼ä»¥ä¸ºï¼ç±äºå个æååéé½ç´§åå°æ¾ç½®å¨ä¸èµ·ï¼è¿ç§æ°æ®å¸å±é常对ç¼åå好ãç¶èï¼å®é
ä¸ï¼æ们éè¦èèæ°æ®çåå模å¼ï¼access patternï¼ã
å¨OOPä¸ï¼éè¿å°è£
ï¼ä¸ä¸ªç±»çåç§åè½ä¼è¢«å®ç°ä¸ºå¤ä¸ªæåå½æ°ï¼èæ¯ä¸ªæåå½æ°å®é
ä¸å¯è½åªä¼ååå°éçæååéãè¿å¯è½å½¢å¼é常严éçé®é¢ï¼ä¾å¦ï¼
å¨è¿ç§æ¨¡å¼ä¸ï¼å®é¶ä¸åªååäºä¸¤ä¸ªæååéï¼ä½å
¶ä»æååéä¹ä¼è½½å
¥ç¼åé æ浪费ãå½ç¶ï¼å¦æå¨è¿ä»£çæ¶åè½ååå°½éå¤çæååéï¼è¿ä¸ªé®é¢å¯è½å¹¶ä¸åå¨ï¼ä½å®é
ä¸æ¯å¾å°é¾çã
å¦æéç¨ä¼ ç»çOOPç¼ç¨èå¼åå®ç°æ¹å¼ï¼æ°æ®å¸å±çé®é¢å ä¹æ²¡æ解å³æ¹æ¡ãæ以å¨[1]éï¼ä½è
æåºï¼å¨æäºæ
åµä¸ï¼åºè¯¥æ¾å¼OOPæ¹å¼ï¼ä»¥æ°æ®çåååå¸å±ä¸ºç¼ç¨çèèéä¸ï¼ç§°ä½é¢åæ°æ®ç¼ç¨ï¼data-oriented programming, DOPï¼ã