ÎÒÃÇÏÈ´ÓÒ»¸öС¹ÊÊ¿ªÊ¼½²Æð¡£¼¸¸öÐÇÆÚǰ£¬ÎÒÔÚJavaºËÐÄ¿âµÄÓʼþÁбíÖз¢ÆðÒ»¸öÐ޸ĵÄÌáÒ飬ϣÍûÄÜÖØÐ´Ò»Ð©Ä¿Ç°ÊÇfinalÀàÐ͵ķ½·¨¡£Õâ¸öÌá°¸Òý·¢Á˺ü¸¸öÌÖÂ۵ϰÌ⡪¡ªÆäÖÐÒ»¸öÊÇ·½·¨ÊDz»ÊÇfinalÀàÐ͵ģ¬ËüµÄÐÔÄܲî¾àµ½µ×Óжà´ó¡£
¹ØÓÚÈ¡ÏûfinalÊÇ·ñ»áµ¼µ½ÐÔÄܱä²îÎÒÆäʵÓÐһЩ×Ô¼ºÏë·¨£¬µ«ÎÒ¾ö¶¨ÏÈÅ׿ªÕâЩÖ÷¹Û¿´·¨£¬ÏëÕÒÕÒ¿´ÓÐûÓÐÕâ¸ö¿ÎÌâÏà¹ØµÄһЩ»ù×¼²âÊÔµÄÊý¾Ý¡£ºÜ²»ÐÒµÄÊÇÎÒûÕÒµ½¡£²¢²»ÊÇËµÕæµÄ²»´æÔÚ»òÕßûÓÐÈËÑо¿¹ýÕâÖÖÇé¿ö£¬Ö»ÄÜ˵ÎÒûÓп´µ½Óй«¿ªµÄͬÐÐÉó²é¹ýµÄ´úÂë¡£¿´À´£¬µÃ×Ô¼ºÐ´µã²âÊÔÁË¡£
»ù×¼²âÊÔ·½·¨ÂÛ
ÎÒ¾ö¶¨Ê¹ÓÃJMHÕâ¸ö¿¿Æ×µÄ¿ò¼ÜÀ´½«ÕâЩ»ù×¼²âÊÔ½øÐдò°ü¡£Èç¹ûÄã²»ÏàÐÅ»áÓпò¼ÜÄܰïÖúÄãµÃµ½¾«È·µÄ»ù×¼²âÊÔµÄÊý¾Ý£¬ÄãÓ¦¸Ã¿´ÏÂAleksey
ShipilevµÄÕâ¸öÑݽ²£¬ËûÊÇÕâ¸ö¿ò¼ÜµÄ×÷Õߣ¬»òÕß¿´Ï Nitsan WakartµÄÕâÆªºÜÔ޵IJ©ÎÄ£¬ÀïÃæÏêϸ½âÊÍÁ˾ßÌåµÄÔÒò¡£
¶ÔÎÒ¶øÑÔ£¬ÎÒÏëÖªµÀµÄÊÇʲôÒòËØ»áÓ°Ïìµ½·½·¨µ÷ÓõÄÐÔÄÜ¡£ÎÒ¾ö¶¨Ê¹Óò»Í¬µÄ·½Ê½À´½øÐз½·¨µ÷Ó㬲¢²âÁ¿ÏÂËüÃǸ÷×ԵĿªÏú¡£ÎÒÕâÓÐÒ»×é»ù×¼²âÊÔ£¬Ã¿´ÎÖ»µ÷ÕûÆäÖеÄÒ»¸öÒòËØ£¬ÕâÑùÎÒÃÇ¿ÉÒÔ¸ãÇå³þ²»Í¬µÄÒòËØ»òÕß²»Í¬ÒòËØµÄ×éºÏµ½µ×»á¶Ô·½·¨µ÷ÓõĿªÏú²úÉúÔõÑùµÄÓ°Ïì¡£
ÄÚÁª
×îÃ÷ÏÔµ«Í¬Ê±ÓÖ×î²»Ã÷ÏÔµÄÒòËØµ±È»¾ÍÊǵ½µ×ÓÐûÓвúÉú·½·¨µ÷ÓᣱàÒëÆ÷ÊÇÓпÉÄܽ«Õû¸ö·½·¨µ÷ÓõĿªÏúÈ«¶¼¶¼ÓÅ»¯µôµÄ¡£Ò»°ãÀ´Ëµ£¬ÓÐÁ½ÖÖ¼õÉÙµ÷ÓÿªÏúµÄ·½·¨¡£Ò»¸öÊÇÖ±½Ó½«·½·¨±¾ÉíÄÚÁª£¬ÁíÍâÒ»ÖÖÊÇʹÓÃÄÚÁª»º´æ¡£±ðµ£ÐÄ¡ª¡ªÕâÖ»ÊÇЩºÜ¼òµ¥µÄ¸ÅÄî¶øÒÑ£¬Ö»²»¹ýÀïÃæÓõ½µÄһЩÊõÓï¿ÉÄÜÐèÒª½éÉÜÏ¡£ÎÒÃÇÏȼÙÉèÓÐÒ»¸ö½ÐFooµÄÀ࣬ËüÀïÃæ¶¨ÒåÁËÒ»¸öbar·½·¨¡£
class Foo { void bar() { ... } } |
µ÷ÓÃÕâ¸öbar·½·¨µÄ»°¿ÉÒÔÕâôд£º
Foo foo = new Foo(); foo.bar(); |
ÕâÀïÖØÒªµÄÔÚÓÚbar·½·¨Êµ¼Ê²úÉúµ÷ÓõÄλÖ᪡ªfoo.bar()£¬Õâ¸ö±»³Æ×÷µ÷Óõ㣨callsite£©¡£µ±ÎÒÃÇ˵һ¸ö·½·¨±»¡°ÄÚÁª¡±ÁË£¬ËüµÄÒâ˼ÊÇ·½·¨Ìå±»ÄóöÀ´Èûµ½ÁËÕâ¸öµ÷ÓõãÕâÀÕû¸öÌæ»»µôÁËÕâ´Î·½·¨µ÷Ó᣶ÔÓÚÄÇЩ°üº¬ºÜ¶àСµÄ·½·¨µÄ³ÌÐòÀ´Ëµ£¨ÎÒ¸Ò˵£¬ÕâÊǸöÕýÈ··Ö½âÈÎÎñµÄ³ÌÐò£©£¬·½·¨ÄÚÁªÄÜÏÔÖøµØÌáÉý³ÌÐòµÄÔËÐÐËÙ¶È¡£ÕâÊÇÒòΪ³ÌÐò²»»á»¨Ì«¶àµÄʱºò½øÐз½·¨µ÷Óöø²»ÊÇÔÚ¸Éʵ¼ÊµÄ¹¤×÷£¡ÎÒÃÇ¿ÉÒÔͨ¹ý@CompilerControl×¢½âÀ´¿ØÖÆÊÇ·ñÒªÄÚÁªÒ»¸ö·½·¨¡£ºóÃæÎÒÃǻὲµ½Ê²Ã´ÊÇÄÚÁª»º´æ¡£
Àà²ã´ÎµÄÉî¶È¼°·½·¨µÄÖØÐ´
Èç¹ûÎÒÃÇÑ¡ÔñÒÆ³ý·½·¨µÄfinal¹Ø¼ü×Ö£¬ÕâÒâζÎÒÃÇ¿ÉÒÔ¶ÔËü½øÐÐÖØÐ´ÁË¡£ÕâÊÇÁíÒ»¸öÎÒÃÇÐèÒª¿¼ÂǵÄÒòËØ¡£ÒòЩÎÒÔÚÒ»¸öÀàµÄ²»Í¬µÄ²ã¼¶Éϵ÷ÓÃËüµÄ·½·¨£¬Í¬Ê±ÔÚ²»Í¬µÄ²ã¼¶É϶ÔËüÃǽøÐÐÖØÐ´£¬ÕâÑùÎÒ²ÅÄÜŪÇå³þÀàµÄÉî¶ÈºÍÖØÐ´µ½µ×»á²úÉú¶à´óµÄ¿ªÏú¡£
¶à̬

ÔÚÇ°ÃæÎÒÌáµ½µ÷ÓõãµÄʱºò£¬ÎÒ¹ÊÒ⩵ôÁËÒ»¸öºÜÖØÒªµÄϸ½Ú¡£ÓÉÓÚ¿ÉÒÔÔÚ×ÓÀàÖÐÖØÐ´·Çfinal·½·¨£¬ÎÒÃǵĵ÷Óõã¿ÉÄÜ×îÖÕ»áµ÷Óõ½²»Í¬µÄ·½·¨¡£ÄÇô¿ÉÄÜÎÒ´«µÄÊÇFoo¶ÔÏó»òÕßÊÇËüµÄ×ÓÀࡪ¡ªBaz¡ª¡ªËüҲʵÏÖÁËbar()·½·¨¡£ÄDZàÒëÆ÷Ôõô֪µÀ¸Ãµ÷ÓÃÄĸö·½·¨ÄØ£¿JavaÖеķ½·¨Ä¬È϶¼ÊÇÐé·½·¨£¨¿ÉÖØÐ´µÄ£©£¬Ò²¾ÍÊÇ˵ÿ´Î·½·¨µ÷Óö¼µÃÔÚÒ»ÕűíÖвéÕÒºÏÊʵķ½·¨£¬Õâ¸ö±í³ÆÎªÐé·½·¨±í¡£Õâ¸ö¹ý³ÌÊÇÏ൱ÂýµÄ£¬Òò´ËºÃµÄ±àÒëÆ÷¶¼»á³¢ÊÔÈ¥¼õÉÙÕâ¸ö²éÕҵĿªÏú¡£ÎÒÃÇ֮ǰÌáµ½µÄÒ»¸ö·½·¨ÊÇÄÚÁª£¬Èç¹ûÄãµÄ±àÒëÆ÷Äܹ»È·¶¨ÔÚÒ»¸öÖ¸¶¨µÄµ÷ÓõãÖ»»áµ÷Óõ½Ä³¸ö·½·¨µÄ»°ÄǾÍÌ«°ôÁË¡£ÕâÑùµÄµ÷Óõ㱻³Æ×÷µ¥Ì¬µ÷Óõ㡣
²»ÐÒµÄÊÇÒªÖ¤Ã÷Ò»¸öµ÷ÓõãÊǵ¥Ì¬µÄËù»¨·ÑµÄʱ¼ä´ó¶à¶¼ÊDz»ÇÐʵ¼ÊµÄ¡£JIT±àÒëÆ÷ÇãÏòÓÚ²ÉÓÃÁíÒ»ÖÖ·½·¨£¬Ëü»áͳ¼Æ¸÷¸öµ÷Óõãʵ¼Êµ÷ÓõÄÀàÐÍ£¬Èç¹ûǰN¸öµ÷Óö¼Êǵ¥Ì¬µÄ£¬ÄÇËü¾Í»á²Â²âÕâ¸öµ÷Óõã¿ÉÄÜÒ»Ö±¶¼Êǵ¥Ì¬µÄ¡£Õâ¸öͶ»úʽµÄÓÅ»¯Í¨³£À´Ëµ¶¼ÊÇÕýÈ·µÄ£¬µ«ÓÉÓÚËü²¢²»È«ÊǶԵģ¬Òò´Ë±àÒëÆ÷ÐèÒª·½·¨µ÷ÓÃǰ²åÈëÒ»¸öÊØÎÀ£¬ÒÔ±ã¼ì²éÕâ¸ö·½·¨µÄÀàÐÍ¡£
ÎÒÃÇÏëÒªÓÅ»¯µÄ¿É²»Ö¹µ¥Ì¬µ÷ÓõãÒ»¸ö¶øÒÑ¡£Óкܶàµ÷ÓõãרҵµãµÄ»°½Ð×ö˫̬¡ª¡ªËü¿ÉÄÜ»áµ÷Óõ½Á½¸ö·½·¨¡£Äã¿ÉÒÔʹÓÃÄãµÄÊØÎÀ´úÂëÀ´ÅжÏÓ¦¸Ãµ÷ÓÃÄĸö·½·¨£¬È»ºóÌø×ª¹ýÈ¥¡£Õâ±ÈÍêÕûµÄ·½·¨µ÷ÓÿÉÒªÁ®¼Û¶àÁË¡£ÕâÖÖÇé¿öÒ²¿ÉÒÔʹÓÃÄÚÁª»º´æÀ´½øÐÐÓÅ»¯¡£ÄÚÁª»º´æ²¢²»ÊÇʵ¼Ê½«·½·¨ÌåÄÚÁªµ½µ÷Óõ㣬¶øÊÇʹÓÃÁËÒ»¸öרÃŵÄÌø×ª±í£¬Ëü¾ÍÏñÊÇÒ»¸öÍêÕûµÄÐé·½·¨±í²éѯµÄ»º´æ¡£HotSpotµÄJIT±àÒëÆ÷Ö§³Ö˫̬ÄÚÁª»º´æ£¬Ëü½«ÄÇЩÓÐÈý¸öÒÔÉÏ¿ÉÄܵÄʵÏֵĵ÷ÓÃµã³ÆÎª¡±Õ×̬¡°£¨megamorphic£©¡£
ÏÖÔÚÎÒÃÇÇø·Ö³öÁËÈýÖÖÐèÒª½øÐлù×¼²âÊԺͷÖÎöµÄµ÷Ó÷½Ê½£ºµ¥Ì¬£¬Ë«Ì¬£¬¼°Õ×̬¡£
²âÊÔ½á¹û
ÎÒÃǽ«²âÊÔ½á¹û½øÐзÖ×éÊÕ¼¯£¬ÕâÑùÄܸüÈÝÒ׿´ÇåÎÊÌâµÄ±¾ÖÊ¡£ÎÒ°ÑÔʼÊý¾ÝÁÐÁ˳öÀ´£¬Í¬Ê±»¹¸½´øÁËÒ»µã·ÖÎö¡£¾ßÌåµÄÊý×Ö»òÕß¿ªÏúÒâÒåÆäʵ²¢²»ÊÇÌØ±ð´ó¡£µ«ÓÐȤµÄÊDz»Í¬µÄ·½·¨µ÷ÓüäµÄ±ÈÂÊÒÔ¼°ÏàÓ¦µÄ±ê×¼Îó²î¶¼·Ç³£µÄµÍ¡£²»Í¬µ÷ÓõÄÇø±ð·Ç³£Ã÷ÏÔ¡ª¡ª×î¿ìºÍ×îÂýµÄʵÏÖ²îÁË6.26±¶¡£ÏÖʵÖÐÕâÖÖ²î¾à¿ÉÄܸü´ó£¬ÒòΪÕâÀïÎÒÃDzâÁ¿µÄÊÇÒ»¸ö¿Õ·½·¨µÄ¿ªÏú¡£
ÕâЩ»ù×¼²âÊÔµÄÔ´´úÂëÔÚGitHubÉÏÓС£ÎÒûÓаѽá¹û¶¼·Åµ½ÆðÒÔÃâ²úÉú»ìÏý¡£¶à̬µÄ»ù×¼²âÊÔÊÇÔËÐÐPolymorphicBenchmarkµÄ½á¹û£¬¶øÆäËüµÄÊÇÔËÐÐJavaFinalBenchmarkµÄ½á¹û¡£
¼òµ¥µ÷Óõã

ÎÒÃǵĵÚÒ»×éÊý¾Ý±È½ÏµÄÊÇÐé·½·¨£¬final·½·¨£¬ÒÔ¼°Ò»¸öÔÚºÜÉîµÄÀà²ã´ÎÖнøÐÐÖØÐ´µÄ·½·¨¼äµÄµ÷ÓÿªÏú¡£×¢Ò⣬ÎÒÃÇÕâÀïÇ¿ÖÆÈñàÒëÆ÷²»½øÐÐÄÚÁª¡£ÎÒÃÇ¿ÉÒÔ¿´µ½£¬ËüÃÇÖ®¼äµÄ²î±ð·Ç³£Ð¡£¬±ê×¼Îó²îÒ²ºÜµÍ¡£Òò´ËÎÒÃÇ¿ÉÒԵóöÕâÑùµÄ½áÂÛ£¬¼òµ¥µÄ¼ÓÒ»¸öfinal¹Ø¼ü×ÖÆäʵ²»»á¶Ô·½·¨µ÷ÓõÄÐÔÄÜÓÐÌ«´óµÄÌáÉý¡£Í¬ÑùµÄ£¬ÖØÐ´·½·¨Ò²²»»á²úÉúÌ«´óµÄÇø±ð¡£
¼òµ¥µ÷ÓõãÄÚÁª

ÏÖÔÚÎÒÃÇ»¹ÊÇʹÓÃÕâÈý¸öÓÃÀý½øÐвâÊÔ£¬µ«È¥µôÁËÄÚÁªµÄÏÞÖÆ¡£Õâ´ÎfinalºÍÐé·½·¨µ÷ÓõĽá¹ûÈÔÈ»ºÜ½Ó½ü¡£ËüÃDZȷÇÄÚÁª°æ±¾¿ìÁË´ó¸Å4±¶£¬ÎÒÈÏΪÕ⵱ȻÊǽøÐÐÁËÄÚÁªµÄÔÒò¡£ÖØÐ´µÄÕâ¸ö·½·¨½éÓÚÁ½ÕßÖ®¼ä¡£ÎÒ»³ÒÉÕâÊÇÓÉÓÚÕâ¸ö·½·¨¿ÉÄÜ´æÔÚ¶à¸ö×ÓÀàµÄʵÏÖ£¬µ¼Ö±àÒëÆ÷²åÈëÁËÒ»¸öÀàÐÍÊØÎÀ£¨type
guard)¡£Õâ¸ö»úÖÆÔÚÉÏÃæµÄ¶à̬һ½ÚÖÐÒѾÓкÜÏêϸµÄÃèÊö¡£
Àà²ã¼¶µÄÓ°Ïì

ÍÛ£¬ÕâÀïµÄ·½·¨¿ÉÕæ¶à¡£Ã¿¸ö±àºÅµÄ·½·¨£¨1-4£©¶¼¶ÔÓ¦×Å·½·¨µ÷ÓÃËùÔÚÀàµÄ²ã¼¶µÄÉî¶È¡£Òò´ËparentMethod4·½·¨Òâζ×ÅÎÒÃǵ÷ÓõÄÕâ¸ö·½·¨ÉùÃ÷ÔÚÀàµÄµÚ4¼¶µÄ¸¸ÀàÖС£Èç¹ûÄ㿴һϽá¹ûÊý¾ÝÄã»á·¢ÏÖ1µ½4Ö®¼äÆäʵû̫´óÇø±ð¡£Òò´ËÎÒÃÇ¿ÉÒÔÈÏΪ£¬Àà²ã¼¶µÄÉî¶È²¢Ã»ÓÐʲôӰÏì¡£ÄÚÁªµÄ·½·¨ÐÔÄܺÍÇ°ÃæµÄinlinableAlwaysOverriddenMethod½á¹û²î²»¶à£¬µ«±ÈinlinableVirtualInvokeÒª²îЩ¡£ÎÒÈÏΪÕâÊÇʹÓÃÁËÀàÐÍÊØÎÀµÄÔÒò¡£JIT±àÒëÆ÷¿ÉÒÔͳ¼Æ·½·¨ÕÒ³öÐèÒªÄÚÁªµÄÄǸö£¬µ«Ëü²»ÄÜÈ·±£Ò»Ö±¶¼»áÊǵ÷ÓõÄÕâ¸ö·½·¨¡£
Àà²ã¼¶¶Ôfinal·½·¨µÄÓ°Ïì

ÕâºÍÉÏÃæµÄ½á¹û²î²»¶à¡ª¡ªfinal¹Ø¼ü×Ö¿´ÆðÀ´²¢Ã»ÓÐÌ«´óµÄÓ°Ïì¡£ÎÒÔ±¾ÈÏΪÕâÀï¿ÉÄÜinlinableParentFinalMethod4»á±»ÄÚÁª³É²»Ê¹ÓÃÀàÐÍÊØÎÀµÄ°æ±¾£¬²»¹ý´Ó½á¹ûÀ´¿´²¢²»ÊÇÕâÑù¡£
¶à̬
Monomorphic: 2.816 +- 0.056 ns/op Bimorphic:
3.258 +- 0.195 ns/op Megamorphic: 4.896 +- 0.017 ns/op
Inlinable Monomorphic: 1.555 +- 0.007 ns/op Inlinable
Bimorphic: 1.555 +- 0.004 ns/op Inlinable Megamorphic:
4.278 +- 0.013 ns/op
×îºóÖÕÓÚµ½Á˶à̬·Ö·¢µÄÁË¡£µ¥Ì¬µ÷ÓõĿªÏúºÍͨ³£µÄÐé·½·¨µ÷ÓÃÊÇÒ»ÑùµÄ¡£Ëæ×ÅÎÒÃÇÐèÒª²éÕÒµÄÐé·½·¨±íÔ½À´Ô½´ó£¬ËüÃÇÒ²±äµÃÔ½À´Ô½ÂýÁË£¬¾ÍÏñ˫̬ºÍÕ×̬ÄÇÁ½¸öÀý×ÓÖÐÄÇÑù¡£Ò»µ©ÎÒÃÇ¿ªÆôÁËÄÚÁª£¬ÀàÐÍ·ÖÎö¿ªÊ¼½éÈëÁË£¬µ¥Ì¬ºÍ˫̬µÄµ÷ÓõãµÄ¿ªÏú½µµÍ³ÉÁË¡±ÄÚÁªÊØÎÀ£¨inlined
with guard£©¡°µÄ¿ªÏú¡£¸úÀà²ã¼¶ÓÃÀýÖеĺÜÀàËÆ£¬Ö»ÊÇÉÔ΢ÂýÁËЩ¡£Õ×̬µÄÕâ¸öÈÔȻʮ·Ö»ºÂý¡£¼Çס£¬ÎÒÃDz¢Ã»ÓиæËßhotspot˵²»ÒªÈ¥½øÐÐÄÚÁª£¬Ö»ÊÇËüûÓÐΪ±È˫̬¸ü¸´Ôӵĵ÷ÓõãÀ´ÊµÏÖ¶à̬µÄÄÚÁª»º´æ¶øÒÑ¡£
ÎÒÃÇ´ÓÖÐѧµ½ÁËʲô£¿
ÎÒÏëÖµµÃ×¢ÒâµÄÊÇ£¬ºÜ¶àÈ˶ÔÓÚ²»Í¬ÀàÐ͵ķ½·¨µ÷ÓÃÐèÒª²»Í¬µÄʱ¼ä²¢Ã»ÓÐÒ»¸öÇåÎúµÄÐÔÄÜÄ£ÐÍ£¬Í¬Ê±ËäÈ»ºÜ¶àÈËÒ²ÖªµÀËüÃÇËù»¨·ÑµÄʱ¼ä²»Í¬£¬µ«È´Ã»ÄÜÕýÈ·µØÀí½âËü¡£ÎÒÔø¾Ò²ÊÇÕâÑù£¬Ò²Ôø×ö¹ý»°¶à´íÎóµÄ¼ÙÉè¡£Òò´ËÎÒÏ£ÍûÕâ´ÎµÄ·ÖÎöÄܶÔÄãÃÇÓÐËù°ïÖú¡£ÏÂÃæÊÇÎÒµÄһЩ×ܽᡣ
·½·¨µ÷ÓõÄ×î¿ìʵÏÖºÍ×îÂýʵÏֵIJî±ð»¹ÊǺܴóµÄ¡£
ÔÚʵ¼ùÖÐÔö¼Ó»òÕß¼õÉÙfinal¹Ø¼ü×ÖÆäʵ¶ÔÐÔÄܵÄÓ°Ïì²¢²»´ó¡£
Àà²ã´Î½á¹¹µÄÉî¶È¶Ô·½·¨µ÷ÓõÄÐÔÄܲ¢Ã»ÓÐʲôʵ¼ÊµÄÓ°Ïì¡£
µ¥Ì¬µ÷ÓñÈ˫̬µ÷ÓÃÒª¿ì¡£
˫̬µ÷ÓñÈÕ×̬µ÷ÓÃÒª¿ì¡£
ÔÚÎÒÃÇÇ°Ãæ¿´µ½µÄ»ùÓÚͳ¼Æ·ÖÎö¿ÉÄÜÊǵ¥Ì¬µ÷Óõ«ÊDz¢²»È·¶¨µÄÓÃÀýÖУ¨×¢£º»á½øÐÐÄÚÁªÓÅ»¯£¬µ«ÊÇÔÚµ÷ÓÃǰ»á²åÈëÒ»¸öÀàÐÍÊØÎÀ£©£¬ÀïÃæËùʹÓõ½µÄÀàÐÍÊØÎÀµÄÈ·ÊÇ»áÓ°Ïìµ½ÐÔÄÜ¡£
ÀàÐÍÊØÎÀµÄ¿ªÏú¶ÔÎÒ¸öÈ˶øÑÔÓкܴóµÄÆô·¢¡£ÎÒºÜÉÙ¿´µ½ÓÐÈËÌá¼°Ëü£¬Í¨³£´ó¼Ò¶¼ÈÏΪËüÎ޹ضøºöÂÔµôÁË¡£
˵Ã÷
µ±È»Õâ²¢²»ÊÇÕâ¸ö»°ÌâµÄÒ»¸ö½áÂÛÐÔµÄÂÛÊö¡£
±¾ÎĹØ×¢µÄÖ»ÊǺͷ½·¨µ÷ÓÃÐÔÄÜÏà¹ØµÄÀàÐÍÏà¹ØµÄÒòËØ¡£ÓÐÒ»¸öÒòËØÎÒûÓÐÌá¼°µ½µÄÊÇ·½·¨ÌåµÄ´óСºÍµ÷ÓÃÕ»µÄÉî¶È¶ÔÄÚÁªµÄÓ°Ïì¡£Èç¹ûÄãµÄ·½·¨Ì«´óµÄ»°£¬ËüÊDz»»á±»ÄÚÁªµÄ£¬ÄãÈÔÈ»»áΪ·½·¨µ÷ÓõĿªÏúÂòµ¥¡£ÕâÒ²ÊÇΪʲô·½·¨ÒªÐ´µÃС¶øÒ׿´¶®µÄÒ»¸öÔÒò¡£
ÎÒûÓзÖÎöͨ¹ý½Ó¿Úµ÷Ó÷½·¨¶ÔÕ⼸ÖÖÇé¿öµÄÓ°Ïì¡£Èç¹ûÄã¶ÔÕâ¸ö¸ÐÐËȤµÄ»°£¬ÔÚMechanical
SympathyµÄ²©¿ÍÉÏÓйØÓÚ½Ó¿Úµ÷ÓÃÐÔÄܵÄÒ»¸ö·ÖÎö¡£
»¹ÓÐÒ»¸öÍêÈ«ºöÂÔÁ˵ÄÒòËØÊÇ·½·¨ÄÚÁª¶ÔÆäËü±àÒëÆ÷ÓÅ»¯µÄÓ°Ïì¡£µ±±àÒëÖ»¶Ôij¸ö·½·¨½øÐÐÓÅ»¯µÄʱºò£¬Ëüµ±È»Ï£ÍûÄÜÊÕ¼¯¾¡¿ÉÄܶàµÄÐÅÏ¢£¬ÕâÑùËü²ÅÄܸüÓÐЧµØ½øÐÐÓÅ»¯¡£ÄÚÁªÓÅ»¯µÄÏÞÖÆ¿ÉÄÜ»á¶ÔÆäËüÓÅ»¯²úÉúºÜ´óµÄÓ°Ïì¡£
´Ó»ã±àµÄ²ãÃæÀ´½øÐзÖÎö²ÅÄܶÔÕâ¸öÎÊÌâÓиüÉîÈëµÄÁ˽⡣
Ò²ÐíÔÚÒÔºóµÄ²©¿ÍÖлáÌÖÂÛÒ»ÏÂÕâЩ»°Ìâ¡£
|