青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

socketref,再見!高德

https://github.com/adoggie

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用鏈接

留言簿(54)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜


return true if equal

 1 bool strcmp( char* d,char * s){
 2     if( d==s) return true;
 3     while*d==*&& *&& *s){
 4         d++;s++;
 5     }
 6     if*d==*&& *d==0){
 7         return true;
 8     }
 9     return false;
10 }


posted on 2008-05-05 02:57 放屁阿狗 閱讀(4072) 評論(15)  編輯 收藏 引用 所屬分類: unix/linux/solaris/sco-unix/novell

Feedback

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 07:28 herculesinchina
char tmp;
char not_equal = 1;
if((d == s) return true;
if((d == NULL) || (s == NULL)) return false;

do{
tmp = !(*s++);
not_equal = !(tmp == *d++);
}while(!(tmp - not_equal));

if(not_equal)
return false
return true

不過 最高效的實現還是嵌入匯編  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 07:30 herculesinchina
正確的程序
char tmp;
char not_equal = 1;
if((d == s) return true;
if((d == NULL) || (s == NULL)) return false;

do{
tmp = (*s++);
not_equal = !(tmp == *d++);
}while(!((!tmp) - not_equal));

if(not_equal)
return false
return true  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 08:32 不懂
樓主要求的是簡潔,呵呵,一般來說都是要求快速,所以樓主這個命題就算是實現了也沒什么用  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現[未登錄] 2008-05-05 08:46 len
crt中strcmp()返回的是整數值,這樣就可以表示小于,等于,大于.
貼段vc中crt實現吧

int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ;

while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;

if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;

return( ret );
}
  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 09:51 孤帆1
建議看看ms的源碼.  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 12:00 螞蟻終結者
作為庫函數效率還是比簡潔重要,建議看下VC CRT的匯編代碼。  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 12:20 zhp
我也寫個吧:
bool strcmp( const char* d,const char * s)
{
if( d==s) return true;
while( *d++==*s++ );
return !(*d||*s);
}
  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 12:24 zhp
不追求效率還可以再去一行:
bool strcmp( const char* d,const char * s)
{
while( *d++==*s++ );
return !(*d||*s);
}
  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 16:19 肥仔
要有大于0,小于0,等于0的返回值啊,怎么才true false呢?

Return Value
The return value for each of these functions indicates the lexicographic relation of string1 to string2.

Value Relationship of string1 to string2
< 0 string1 less than string2
0 string1 identical to string2
> 0 string1 greater than string2
  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 19:21 vitacy
assert(d && s);
if(d==s) return true;
if(len(d) != len(s) ) return false;
while(*d && *d++ == *s++ )

return ! *d;  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 21:21 Wang Feng
int
strcmp(const char *s1, const char *s2)
{
while (*s1 == *s2)
{
if (*s1 == 0)
return 0;
++s1;
++s2;
}
return *(unsigned const char *)s1 - *(unsigned const char *)(s2);
}
  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 22:00 herculesinchina
個人感覺這段VC CRT的代碼效率不如我的高。
下面是對while循環體的編譯反匯編結果。編譯選項為:
gcc -O3
============================================
VC CRT代碼循環體反匯編結果
----------------------------------------------------------
80483b4: 0f b6 13 movzbl (%ebx),%edx
80483b7: 0f b6 01 movzbl (%ecx),%eax
80483ba: 29 c2 sub %eax,%edx
80483bc: 75 21 jne 80483df <strcmp+0x3f>
80483be: 80 39 00 cmpb $0x0,(%ecx)
80483c1: 75 10 jne 80483d3 <strcmp+0x33>
80483c3: eb 1a jmp 80483df <strcmp+0x3f>
80483c5: 0f b6 41 01 movzbl 0x1(%ecx),%eax
80483c9: 83 c3 01 add $0x1,%ebx
80483cc: 83 c1 01 add $0x1,%ecx
80483cf: 84 c0 test %al,%al
80483d1: 74 0c je 80483df <strcmp+0x3f>
80483d3: 0f b6 53 01 movzbl 0x1(%ebx),%edx
80483d7: 0f b6 41 01 movzbl 0x1(%ecx),%eax
80483db: 29 c2 sub %eax,%edx
80483dd: 74 e6 je 80483c5 <strcmp+0x25>
共16條語句
=================================================
我的代碼反匯編結果
--------------------------------------------------------------
80483c0: 0f b6 01 movzbl (%ecx),%eax
80483c3: 83 c1 01 add $0x1,%ecx
80483c6: 3a 03 cmp (%ebx),%al
80483c8: 0f 95 c2 setne %dl
80483cb: 83 c3 01 add $0x1,%ebx
80483ce: 84 c0 test %al,%al
80483d0: 89 d6 mov %edx,%esi
80483d2: 0f 94 c0 sete %al
80483d5: 0f be d2 movsbl %dl,%edx
80483d8: 0f b6 f8 movzbl %al,%edi
80483db: 39 d7 cmp %edx,%edi
80483dd: 74 e1 je 80483c0 <strcmp+0x20>
==================================================
從指令函數上看,循環體少了4條指令,且中間沒有任何跳轉指令,不會影響指令流水線執行。運行效率應該比VC CRT版本高得多。
  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-05 22:32 herculesinchina
我的代碼好體現在三點:
1、訪存次數少(一次循環僅訪存兩次)
對于VC代碼,雖然cache一般都會命中,訪問速度肯定比訪問寄存器慢些
2、循環體內無跳轉指令,利于流水線操作
3、指令少。
  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-07 10:27 Louix
strcmp表面上看是比較字符串,說白了就是比較兩段內存,為什么只用char *呢?用int *或者__int64 *才會帶來質的飛躍,對于字符串結尾0的處理參考strlen。  回復  更多評論
  

# re: 隨便寫個strcmp()函數,看看大家能否有更簡潔的實現 2008-05-08 00:27 放屁阿狗
@Louix
這位老兄說的非常有道理  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产成人精品视频 | 这里只有精品在线播放| 99re6热在线精品视频播放速度 | 午夜精品一区二区三区在线| 国产精品家教| 性欧美精品高清| 嫩草影视亚洲| 一区二区高清视频在线观看| 国产精品实拍| 久久久久五月天| 亚洲乱码国产乱码精品精98午夜| 亚洲综合清纯丝袜自拍| 国内激情久久| 欧美理论电影网| 性娇小13――14欧美| 欧美高清在线观看| 午夜精品久久一牛影视| 亚洲国产cao| 欧美性猛片xxxx免费看久爱| 久久久7777| 99精品国产在热久久| 久久男女视频| 一区二区精品| 激情欧美国产欧美| 欧美日韩在线观看视频| 久久精品国产亚洲一区二区| 日韩图片一区| 欧美1级日本1级| 亚洲免费一在线| 亚洲国产婷婷综合在线精品 | 欧美日韩一区在线观看| 欧美在线高清| 99精品国产在热久久| 免费看av成人| 欧美一区二区三区四区视频| 亚洲乱亚洲高清| 狠狠爱www人成狠狠爱综合网| 欧美日本一道本| 久久婷婷综合激情| 亚洲砖区区免费| 亚洲美女诱惑| 欧美国产1区2区| 久久久久91| 亚洲欧美日韩爽爽影院| 一本久久a久久免费精品不卡| 怡红院av一区二区三区| 国产日韩欧美在线观看| 国产精品多人| 欧美理论在线播放| 免费成年人欧美视频| 欧美一区二区精品| 亚洲综合成人在线| 夜夜嗨av色综合久久久综合网| 欧美激情一区二区三级高清视频 | 国产私拍一区| 国产精品区二区三区日本| 欧美精品18videos性欧美| 久久综合伊人77777尤物| 久久er99精品| 欧美一区二区免费观在线| 亚洲自拍偷拍一区| 亚洲综合色自拍一区| 一区二区三区四区蜜桃| 99re国产精品| 日韩午夜免费| 一区二区三欧美| 一二三四社区欧美黄| 日韩午夜剧场| 一本色道久久综合精品竹菊| 一区二区三区视频在线观看| 一区二区三区波多野结衣在线观看| 亚洲人www| 亚洲欧洲日韩在线| 亚洲精品一级| 亚洲天堂网在线观看| 亚洲午夜精品久久久久久app| 亚洲视频免费在线观看| 亚洲无吗在线| 欧美一区二区精美| 久久香蕉国产线看观看网| 久久亚洲精品一区二区| 欧美1区2区3区| 欧美激情在线播放| 欧美日韩一本到| 国产精品资源| 国产亚洲一区二区三区在线观看| 国产一区二区丝袜高跟鞋图片| 国模叶桐国产精品一区| 亚洲电影有码| 日韩视频免费在线观看| 亚洲欧美变态国产另类| 欧美在线1区| 男人天堂欧美日韩| 亚洲精品免费在线观看| 亚洲一区二区三区高清 | 亚洲人永久免费| 亚洲免费观看高清在线观看| 亚洲一区综合| 久久久噜噜噜久久| 最新国产の精品合集bt伙计| 一本色道久久综合亚洲精品不| 午夜视频久久久| 久久综合一区二区| 国产精品久久久久久模特| 好看的亚洲午夜视频在线| 亚洲精品视频免费在线观看| 亚洲在线日韩| 麻豆精品传媒视频| 99精品视频免费观看| 欧美在线免费观看亚洲| 欧美精品一区二区高清在线观看| 国产精品视频专区| 亚洲国产影院| 欧美在线播放视频| 亚洲成在人线av| 亚洲欧美日韩网| 欧美激情国产高清| 国产亚洲激情视频在线| 日韩一二三区视频| 久久在线91| 亚洲图中文字幕| 欧美福利视频在线| 国产亚洲精品高潮| 亚洲一区激情| 欧美激情亚洲| 欧美在线首页| 国产精品爱啪在线线免费观看| 欲色影视综合吧| 欧美一区免费| 日韩一级视频免费观看在线| 久久久人成影片一区二区三区| 欧美色区777第一页| 亚洲日本成人女熟在线观看| 欧美在线视频免费观看| 99国产精品一区| 欧美高清视频在线播放| 精品不卡视频| 久久国产88| 亚洲一区二区三区影院| 欧美男人的天堂| 亚洲片区在线| 欧美1级日本1级| 久久国产精品电影| 国产欧美一区二区精品性| 亚洲午夜日本在线观看| 亚洲人成精品久久久久| 蜜乳av另类精品一区二区| 精品不卡一区二区三区| 久久久久国产一区二区三区| 亚洲自拍啪啪| 国产免费成人| 欧美一级免费视频| 亚洲免费一级电影| 国产精品视频1区| 午夜久久tv| 亚洲欧美在线观看| 国产精品视频网址| 亚欧美中日韩视频| 亚洲欧美日本视频在线观看| 国产精品激情偷乱一区二区∴| 亚洲视频免费在线观看| 亚洲国产欧美日韩精品| 欧美大片在线看免费观看| 亚洲开发第一视频在线播放| 亚洲第一主播视频| 欧美不卡一卡二卡免费版| 亚洲精品一二区| 日韩视频一区二区三区| 欧美三级资源在线| 香蕉久久久久久久av网站| 性欧美在线看片a免费观看| 韩国成人福利片在线播放| 久久久在线视频| 久热国产精品视频| 日韩一区二区久久| 一本色道**综合亚洲精品蜜桃冫| 欧美视频一区| 久久国产婷婷国产香蕉| 欧美中文字幕| 亚洲人成小说网站色在线| 日韩视频免费| 国产精品自拍一区| 理论片一区二区在线| 牛牛影视久久网| a4yy欧美一区二区三区| 一二美女精品欧洲| 国内精品久久久久影院薰衣草| 欧美好吊妞视频| 欧美日韩国产一中文字不卡| 午夜影院日韩| 久久久噜噜噜久噜久久| 亚洲精品日韩精品| 亚洲夜间福利| 在线观看精品视频| 一级成人国产| 在线观看欧美黄色| 99综合在线| 激情一区二区| 一本一本大道香蕉久在线精品| 国产一区二区三区在线免费观看|