ת£ºSSEÖ¸Áî½éÉܼ°ÆäC¡¢C++Ó¦ÓÃ
SSEÊÇÓ¢ÌضûÌá³öµÄ¼´MMXÖ®ºóÐÂÒ»´ú£¨µ±È»ÊǼ¸ÄêÇ°ÁË£©CPUÖ¸Á£¬×îÔçÓ¦ÓÃÔÚPIIIϵÁÐCPUÉÏ¡£ÏÖÔÚÒѾµÃµ½ÁËIntel PIII¡¢P4¡¢Celeon¡¢Xeon¡¢AMD Athlon¡¢duronµÈϵÁÐCPUµÄÖ§³Ö¡£¶ø¸üеÄSSE2Ö¸Á½öµÃµ½ÁËP4ϵÁÐCPUµÄÖ§³Ö£¬ÕâÒ²ÊÇΪʲôÕâƪÎÄÕÂÊǽ²SSE¶ø²»ÊÇSSE2µÄÔÒòÖ®Ò»¡£ÁíÒ»¸öÔÒò¾ÍÊÇSSEºÍSSE2µÄÖ¸ÁîϵͳÊǷdz£ÏàËƵģ¬SSE2±ÈSSE¶àµÄ½öÊÇÉÙÁ¿µÄ¶îÍ⸡µã´¦Àí¹¦ÄÜ¡¢64λ¸¡µãÊýÔËËãÖ§³ÖºÍ64λÕûÊýÔËËãÖ§³Ö¡£
SSEΪʲô»á±È´«Í³µÄ¸¡µãÔËËã¸ü¿ìÄØ£¿ÒòΪËüʹÓÃÁË128λµÄ´æ´¢µ¥Ôª£¬Õâ¶ÔÓÚ32λµÄ¸¡µãÊýÀ´½²£¬ÊÇ¿ÉÒÔ´æÏÂ4¸öµÄ£¬Ò²¾ÍÊÇ˵£¬SSEÖеÄËùÓмÆË㶼ÊÇÒ»´ÎÐÔÕë¶Ô4¸ö¸¡µãÊýÀ´Íê³ÉµÄ£¬ÕâÖÖÅú´¦Àíµ±È»¾Í»á´øÀ´Ð§ÂʵÄÌáÉý¡£ÎÒÃÇÔÙÀ´»Ø¹ËÒ»ÏÂSSEµÄÈ«³Æ£ºStream SIMD Extentions£¨Á÷SIMDÀ©Õ¹£©¡£SIMD¾ÍÊÇsingle instruction multiple data£¬Á¬ÆðÀ´¾ÍÊÇ“Êý¾ÝÁ÷µ¥Ö¸Áî¶àÊý¾ÝÀ©Õ¹”£¬´ÓÃû×ÖÎÒÃǾͿÉÒÔ¸üºÃµÄÀí½âSSEÊÇÈçºÎ¹¤×÷µÄÁË¡£
ËäÈ»SSE´ÓÀíÂÛÉÏÀ´½²Òª±È´«Í³µÄ¸¡µãÔËËã»á¿ì£¬µ«ÊÇËûËùÊܵÄÏÞÖÆÒ²ºÜ¶à£¬Ê×ÏÈ£¬ËäÈ»ËûÖ´ÐÐÒ»´ÎÏ൱ÓÚËĴΣ¬»á±È´«Í³µÄ¸¡µãÔËËãÖ´ÐÐ4´ÎµÄËÙ¶ÈÒª¿ì£¬µ«ÊÇËûÖ´ÐÐÒ»´ÎµÄËÙ¶ÈÈ´²¢Ã»ÓÐÏëÏóÖеÄÄÇô¿ì£¬ËùÒÔÒªÌåÏÖSSEµÄËٶȣ¬±ØÐëÓÐStream×öÇ°Ìᣬ¾ÍÊÇ´óÁ¿µÄÁ÷Êý¾Ý£¬ÕâÑù²ÅÄÜ·¢»ÓSIMDµÄÇ¿´ó×÷Óá£Æä´Î£¬SSEÖ§³ÖµÄÊý¾ÝÀàÐÍÊÇ4¸ö32루¹²¼Æ128룩¸¡µãÊý¼¯ºÏ£¬¾ÍÊÇC¡¢C++ÓïÑÔÖеÄfloat[4]£¬²¢ÇÒ±ØÐëÊÇÒÔ16λ×ֽڱ߽ç¶ÔÆëµÄ£¨ÉÔºó»áÒÔ´úÂëÀ´½øÐвûÊÍ£¬¹ØÓڱ߽ç¶ÔÆëµÄ¸ÅÄ¶ÁÕß¿ÉÒԲο¼ÂÛ̳ÉϵÄÆäËüÎÄÕ£¬¶¼»áÓкÜÏêϸµÄ½â´ð£¬ÎÒÕâÀï¾ÍË¡²»×¸ÊöÁË£©¡£Òò´ËÕâÒ²¸øÊäÈëºÍÊä³ö´øÀ´Á˲»ÉÙµÄÂé·³£¬Êµ¼ÊÉÏÖ÷ÒªÓ°ÏìSSE·¢»ÓÐÔÄܵľÍÊDz»Í£µÄ¶ÔÊý¾Ý½øÐи´ÖÆÒÔÊÊÓÃÓ¦ËüµÄÊý¾Ý¸ñʽ¡£
ÎÒÊÇÒ»¸öC++³ÌÐòÔ±£¬¶Ô»ã±à²¢²»ºÜÊ죬µ«ÎÒÓÖÏëÓÃSSEÀ´ÓÅ»¯ÎҵijÌÐò£¬ÎÒ¸ÃÔõô×öÄØ£¿ÐÒºÃVC++.netΪÎÒÃÇÌṩÁ˺ܷ½±ãµÄÖ¸ÁîCº¯Êý¼¶µÄ·â×°ºÍC¸ñʽÊý¾ÝÀàÐÍ£¬ÎÒÃÇÖ»ÐèÏñƽʱдC++´úÂëÒ»Ñù¶¨Òå±äÁ¿¡¢µ÷Óú¯Êý¾Í¿ÉÒԺܺõÄÓ¦ÓÃSSEÖ¸ÁîÁË¡£
µ±È»ÁË£¬ÎÒÃÇÐèÒª°üº¬Ò»¸öÍ·Îļþ£¬ÕâÀïÃæ°üÀ¨ÁËÎÒÃÇÐèÒªµÄÊý¾ÝÀàÐͺͺ¯ÊýµÄÉùÃ÷£º
#include <xmmintrin.h>
SSEÔËËãµÄ±ê×¼Êý¾ÝÀàÐÍÖ»ÓÐÒ»¸ö£¬¾ÍÊÇ£º
__m128£¬ËüÊÇÕâÑù¶¨ÒåµÄ£º
typedef struct __declspec(intrin_type) __declspec(align(16)) __m128 {
float m128_f32[4];
} __m128;
¼ò»¯Ò»Ï£¬¾ÍÊÇ£º
struct __m128
{
float m128_f32[4];
};
±ÈÈçÒª¶¨ÒåÒ»¸ö__m128±äÁ¿£
Ïà¹ØÎĵµ£º
ϵͳ»·¾³£ºWindows 7
Èí¼þ»·¾³£ºVisual C++ 2008 SP1 +SQL Server 2005
±¾´ÎÄ¿µÄ£º±àдһ¸öº½¿Õ¹ÜÀíϵͳ
ÕâÊÇÊý¾Ý¿â¿Î³ÌÉè¼ÆµÄ³É¹û£¬ËäÈ»³É¼¨²»¼Ñ£¬µ«ÊÇ×÷ΪÎÒÓÃVC++ ÒÔÀ´±àдµÄ×î´ó³ÌÐò»¹ÊÇ´«µ½ÍøÉÏ£¬ÒÔ¹©²Î¿¼¡£ÓÃVC++ ×öÊý¾Ý¿âÉè¼Æ²¢²»ÈÝÒ×£¬µ«Ò²²»ÊDz»¿ÉÄÜ¡£ÒÔÏÂÊÇÎҵijÌÐò½çÃ棬ºóÃæ ......
C/C++ÊÇ×îÖ÷ÒªµÄ±à³ÌÓïÑÔ¡£ÕâÀïÁгöÁË50ÃûÓÅÐãÍøÕ¾ºÍÍøÒ³Çåµ¥£¬ÕâЩÍøÕ¾Ìṩc/c++Ô´´úÂë¡£Õâ·ÝÇåµ¥ÌṩÁËÔ´´úÂëµÄÁ´½ÓÒÔ¼°ËüÃǵÄС˵Ã÷¡£ÎÒÒѾ¡Á¦°üÀ¨×î¼ÑµÄC/C++Ô´´úÂëµÄÍøÕ¾¡£Õâ²»ÊÇÒ»¸öÍêÕûµÄÇåµ¥£¬ÄúÓн¨Òé¿ÉÒÔÁªÏµÎÒ£¬ÎÒ½«»¶ÓÄúµÄ½¨Ò飬ÒÔ½øÒ»²½¼ÓÇ¿Õâ·½ÃæµÄÇåµ¥¡£
1¡¢http://snippets.dzone.com/tag/c/ --ÊýÒÔǧ¼Æ ......
21¡¢gotoÓï¾äµÄʹÓÃ
—————————
NÄêÇ°£¬Èí¼þ¿ª·¢µÄÒ»´ú×Úʦ——µÏ½Ü˹ÌØÀ(Dijkstra)˵¹ý£º“goto statment is
harmful !!”£¬²¢½¨ÒéÈ¡ÏûgotoÓï¾ä¡£ÒòΪgotoÓï¾ä²»ÀûÓÚ³ÌÐò´úÂëµÄά»¤ÐÔ¡£
ÕâÀïÎÒҲǿÁÒ½¨Ò鲻ҪʹÓÃgo ......
C/C++ÖеÄ×Ö·û´®ÎÊÌâÔÚÍøÉϵĽ²½âÒ»Ïò·Ç³£º¬ºý£¬´æÔÚ¸÷¸ö²ã´ÎµÄ¿â»ìÓá¢ÀÄÓõÄÇé¿ö£¬ÓÈÆäÊÇ¿í×Ö·ûÓëÕ×Ö·ûµÈÎÊÌâºÜÄÑÕÒµ½ÓÐЧµÄ×ÊÁÏ£¬±¾ÆªËæ±Ê·ÖÏíÒ»ÏÂÎÒ³¤ÆÚÊÕ¼¯µ½µÄһЩ±È½Ï׼ȷµÄ×ÊÁÏÒÔ¼°¾Ý´ËµÃµ½µÄ¸öÈËÀí½â.
CÓïÑÔÖеÄ×Ö·û´®
CÓïÑÔÖÐÌṩÁËÁ½ÖÖ×Ö·ûÀàÐÍcharºÍwchar_t£¬CÓïÑÔʹÓÃ×Ö·ûÊý×éÀ´±íʾ×Ö·û´®£¬Í¬Ê±Ö§³ÖÁ½ÖÖÖ± ......
C++µÄstaticÓÐÁ½ÖÖÓ÷¨£ºÃæÏò¹ý³Ì³ÌÐòÉè¼ÆÖеÄstaticºÍÃæÏò¶ÔÏó³ÌÐòÉè¼ÆÖеÄstatic¡£Ç°ÕßÓ¦ÓÃÓÚÆÕͨ±äÁ¿ºÍº¯Êý£¬²»Éæ¼°ÀࣻºóÕßÖ÷Ҫ˵Ã÷staticÔÚÀàÖеÄ×÷Óá£
Ò»¡¢ÃæÏò¹ý³ÌÉè¼ÆÖеÄstatic
1¡¢¾²Ì¬È«¾Ö±äÁ¿
ÔÚÈ«¾Ö±äÁ¿Ç°£¬¼ÓÉϹؼü×Östatic£¬¸Ã±äÁ¿¾Í±»¶¨Òå³ÉΪһ¸ö¾²Ì¬È«¾Ö±äÁ¿¡£ÎÒÃÇÏȾÙÒ»¸ö¾²Ì¬È«¾Ö±äÁ¿µÄÀý×Ó£¬ÈçÏ£º ......