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

萬星星@豌豆莢 歡迎加入我們
一個吃軟飯的男人!!!!!我只想寫程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0
文字處理軟件應(yīng)該是軟件開發(fā)中的一大支柱,而任何軟件中字符串的處理更不可或缺。這里主要借鑒windows核心編程談?wù)勈褂肬NICODE的好處。

既然是基于windows編程,就得看看windows平臺本身對字符的處理方式。由于ANSI字符采用8位進行編碼,對于西歐ABC之類足夠,然而對于中東的字符不實用(考慮下我們中國的漢字),所以就出現(xiàn)了UNICODE。window98是基于ANSI的平臺,windows2000是基于UNICODE開發(fā)的平臺,因此可以知道在調(diào)用Windows API的時候,假如我們在98系統(tǒng)上傳遞UNICODE字符,那么系統(tǒng)在背后會先把字符轉(zhuǎn)化為ANSI字符然后調(diào)用API;相反,我們在2000系統(tǒng)上傳遞ANSI字符,那么會先轉(zhuǎn)化為UNICODE字符。

去年看過(準確說是翻了一下,沒時間看)一本書《C/C++-編程高手箴言》(梁肇新 超級解霸作者),他里面有一部分是談到使CPU降溫,很好奇翻了一下,主要講如何使CPU少轉(zhuǎn)幾圈。我的感想是,要想成為一名優(yōu)秀的軟件開發(fā)人員,必須make good use of (有時漢語無法表達這么好) CPU和RAM,盡量少浪費時鐘和內(nèi)存塊,當然也需要充分利用否則也是浪費,其中把握的是一個度,扯遠了,回來繼續(xù)談UNICODE。

先看看使用UNICODE的好處(書上的):
1、可以很容易地在不同語言之間進行數(shù)據(jù)交換。
2、使你能夠分配支持所有語言的單個二進制。exe文件或DLL文件。
3、提高應(yīng)用程序的運行效率。

如何基于UNICODE編譯:
只需定義宏_UNICODE或者UNICODE (VC 2005默認采用Unicode編譯)

Windows宏定義處理支持ANSI和UNICODE編譯
大學(xué)C、C++語言中我們學(xué)習(xí)字符表示是char,由于書中講解全部一個模式,而開發(fā)類書籍很少講解ANSI、UNICODE字符串區(qū)別,使得很少有人關(guān)注。在進行函數(shù)調(diào)用的時候,很少去關(guān)注接口處字符串處理,可能無意中你就使CPU多轉(zhuǎn)幾圈。
ANSI字符表示是char,占8位;UNICODE字符表示是wchar_t,占16位。Windows編程用宏對這兩種類型進行了封裝:
typedef?char?CHAR;
typedef?wchar_t?WCHAR;
表示這兩種字符串數(shù)據(jù):
CHAR????chANSI[]????=?"hello";
WCHAR????chUnicode[]????
=?L"hello";
同樣表示字符串卻要使用兩種表示方法,Windows為我們定義了一套宏用來處理這些問題,例如用TCHAR宏表示字符,用_T()宏來表示字符常量類型,它根據(jù)編譯字符集選項來確定具體類型。同樣定義了字符處理函數(shù)宏,具體參看msdn。

下面基于提高應(yīng)用程序的運行效率來探討,純理論分析:
CHAR????chANSI[100];
WCHAR????chUnicode[
100];
//?Normal?sprintf:?all?string?are?ANSI
sprintf(chANSI,?"%s",?"ANSI?Str");
//?Converts?Unicode?string?to?ANSI?(Be?careful?%s?and?%S)
sprintf(chANSI,?"%S",?L"Unicode?Str");
//?Normal?swprintf:?all?string?are?Unicode
swprintf(chUnicode,?L"%s",?L"Unicode?Str");
//?Converts?ANSI??string?to?Unicode?(Be?careful?%s?and?%S)
swprintf(chUnicode,?L"%S",?"ANSI?Str");
從上面可以看出,簡單的一個打印函數(shù)都可能導(dǎo)致CPU多花時鐘來進行函數(shù)調(diào)用前處理,所以編程時一定要養(yǎng)成好習(xí)慣,隨手做到可能使你的代碼與眾不同。由于我們目前的系統(tǒng)大多是Windows 2000以上版本,采用Uincode字符集,在API調(diào)用的時候接口字符都是Unicode的,所以最好采用Unicode字符風格進行編碼,這樣可以減少調(diào)用時轉(zhuǎn)換開銷。

應(yīng)該注意的問題:
假設(shè)定義一個字符數(shù)組TCHAR szName[100],當基于Unicode編譯的時候,它實際占用200字節(jié),假設(shè)有一個給字符賦值函數(shù):
void?SetName(TCHAR*?pName,?int?iSize)
調(diào)用該函數(shù):
SetName(szName,?sizeof(szName))
這樣就可能產(chǎn)生錯誤,sizeof求出的是數(shù)組所占字節(jié)數(shù)目,而不是字符個數(shù),字符個數(shù)應(yīng)該是sizeof(szName)/sizeof(TCHAR)。所以編程的時候腦袋一定要繃緊一根弦,提防類似錯誤。

好了,按照梁大師的理論CPU應(yīng)該是降溫了,按照能量守恒定律CPU熱量由電產(chǎn)生,那我們應(yīng)該是節(jié)約用電了呀!真想不到編程風格可以直接為國家節(jié)約用電,何樂而不為。開玩笑,不過我這樣喜歡電腦的人確實希望電腦可以輕松一點,尤其我大學(xué)那個電腦,一轉(zhuǎn)起來咔嚓響,仿佛象老人一樣不堪重負,真為它擔心。
posted on 2006-09-11 20:34 萬連文 閱讀(2354) 評論(12)  編輯 收藏 引用 所屬分類: 亂七八糟

FeedBack:
# re: 使用UNICODE提高效率
2006-09-11 20:54 | chenger
梁肇新那本書……
關(guān)于他寫的Windows編程的東西,我不是太了解,不好評論。
只是覺得看他的文字很令人不爽。  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-11 22:14 | 笨笨
使用UNICODE提高效率不是絕對的;從我的理解,CPU讀100個字節(jié)肯定要比讀200個字節(jié)少用時間,如果轉(zhuǎn)換的時間比100個字節(jié)讀取的時間短,那么為什么使用UNICODE可以讓CPU少轉(zhuǎn)?
所以使用UNICODE提高效率純粹是抄做,沒有數(shù)據(jù)的依據(jù)的抄做。
  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-11 22:40 | 萬連文
為了軟件國際化,軟件開發(fā)最好采用Unicode,以這個作為前提,我們調(diào)用API時候,采用ANSI字符到接口地方必須會經(jīng)過一個轉(zhuǎn)化過程,這個就是額外花費。至于你談到得那個時間我沒有考證,可能一時半會無法考證,不過按照常理,你也沒有給出依據(jù),既然選擇微軟,還是跟著它走好了。另:采用Unicode字符可以避免混合字符集使用帶來一些隱晦的混淆。用Spy++隨便看一個MicroSoft開發(fā)的Windows窗口,好想都是Unicode的。  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 02:59 | shaker
適用UNICODE不是在乎它會不會帶來效率優(yōu)勢 而是更加的適合國際化 區(qū)別不同的字符集

梁大師那本書 怎么看完全是個人觀點 個人覺得還是有可取的地方的  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 08:28 | 開個玩笑
按這個說法,是不是你不提交字符串,CPU就不轉(zhuǎn)了啊,如果這樣的話,那就一定省了能源了,呵呵  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 08:44 | 笨笨
上面說的就對了,UNICODE不是效率優(yōu)勢,在于國際化,實際上效率也沒有優(yōu)勢。
考證上面的時間其實也比較簡單。所以不要誤導(dǎo)我們這樣的讀者。  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 09:00 | 夢在天涯
windows 2000 的即支持ANSI也支持unicode的開發(fā),所以隨便你用那種字符集編程都可以很好的運行.但是Windows 2000 是使用U n i c o d e 從頭進行開發(fā)的,用于創(chuàng)建窗口、顯示文本、進行字符串操作等的所有核心函數(shù)都需要U n i c o d e 字符串。如果調(diào)用任何一個Wi n d o w s 函數(shù)并給它傳遞一個A N S I 字符串,那么系統(tǒng)首先要將字符串轉(zhuǎn)換成U n i c o d e ,然后將U n i c o d e 字符串傳遞給操作系統(tǒng)。如果希望函數(shù)返回A N S I 字符串,系統(tǒng)就會首先將U n i c o d e 字符串轉(zhuǎn)換成A N S I 字符串,然后將結(jié)果返回給你的應(yīng)用程序。所有這些轉(zhuǎn)換操作都是在你看不見的情況下發(fā)生的。當然,進行這些字符串的轉(zhuǎn)換需要占用系統(tǒng)的時間和內(nèi)存。

例如,如果調(diào)用C r e a t e Wi n d o w E x 函數(shù),并傳遞類名字和窗口標題文本的非U n i c o d e 字符串,那么C r e a t e Wi n d o w E x 必須分配內(nèi)存塊(在你的進程的默認堆中),將非U n i c o d e 字符串轉(zhuǎn)換成U n i c o d e 字符串,并將結(jié)果存儲在分配到的內(nèi)存塊中,然后調(diào)用U n i c o d e 版本的C r e a t e Wi n d o w E x函數(shù)。

對于用字符串填入緩存的函數(shù)來說,系統(tǒng)必須首先將U n i c o d e 字符串轉(zhuǎn)換成非U n i c o d e 字符串,然后你的應(yīng)用程序才能處理該字符串。由于系統(tǒng)必須執(zhí)行所有這些轉(zhuǎn)換操作,因此你的應(yīng)用程序需要更多的內(nèi)存,并且運行的速度比較慢。通過從頭開始用U n i c o d e 來開發(fā)應(yīng)用程序,就能夠使你的應(yīng)用程序更加有效地運行。

windows xp 也是的,但是98,ce等版本不是,<<windows核心編程>>中有說,也可以看我的blog中"windows核心編程--字符集"一文.

  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 09:05 | 夢在天涯
另外,使unicode是軟件可以更快更高效的在各國間轉(zhuǎn)化,也就是國際化,而改動很少或幾乎不用修改代碼  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 09:08 | 萬連文
如果說誤導(dǎo)應(yīng)該不至于,使用Unicode也是微軟建議的。出了例子是Windows核心編程里面的,我本人覺得算是合理。至于別人是否贊同和采用,個人愛好問題。  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 09:10 | LOGOS
看你的東東越來越辛苦了。我必須看一遍,關(guān)掉頁面,再打開,寫評論,不然memory就被吃光了。
unicode的本質(zhì)意義是簡便的國際化,但是并不是說可以很隨意的使用unicode了,因為軟件常常依賴于別的庫,并不是每一個庫都有unicode實現(xiàn)的。
個人覺得,unicode的那點加速無關(guān)緊要。如果你的軟件慢了,還是從別的地方進行優(yōu)化的好。  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 09:41 | 笨笨
LZ還沒有明白所說,提倡UNICODE沒有任何問題,該提倡,但不能以效率來說明問題。  回復(fù)  更多評論
  
# re: 使用UNICODE提高效率
2006-09-12 09:43 | 笨笨
One word, just 跑題了!呵呵  回復(fù)  更多評論
  
簡歷下載
聯(lián)系我

<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(66)

隨筆分類

隨筆檔案

相冊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线亚洲| 久久香蕉国产线看观看av| 欧美日韩天天操| 亚洲欧美日韩国产中文| 蜜臀av国产精品久久久久| 99riav1国产精品视频| 国产午夜精品在线| 久久视频免费观看| 最近中文字幕日韩精品| 在线免费观看日韩欧美| 亚洲综合另类| 美女尤物久久精品| 制服丝袜激情欧洲亚洲| 国内精品久久久久影院色| 欧美女主播在线| 久久精品国产99国产精品| 日韩视频久久| 欧美99久久| 欧美在线观看天堂一区二区三区 | 另类激情亚洲| 亚洲午夜在线| 国产精品久久久久91| 久久久精品日韩欧美| 亚洲午夜国产成人av电影男同| 米奇777超碰欧美日韩亚洲| 亚洲在线黄色| 在线视频亚洲一区| 国产麻豆精品久久一二三| 亚洲国产另类久久精品| 久久九九久精品国产免费直播| 夜夜嗨一区二区| 激情丁香综合| 国产日本欧美一区二区三区在线| 欧美日韩国产综合久久| 久久se精品一区精品二区| 欧美成人在线免费视频| 亚洲美女啪啪| 久久婷婷国产综合国色天香| 香蕉久久夜色| 欧美精品一区二区三区在线看午夜 | 亚洲黄色天堂| 欧美激情一区二区三区在线视频观看| 亚洲欧美国产不卡| 亚洲一区二区三区四区五区黄| 亚洲国产天堂网精品网站| 亚洲第一在线视频| 亚洲国产1区| 亚洲国产婷婷| 夜夜精品视频一区二区| 日韩一区二区精品视频| 日韩网站在线| 一区二区三区|亚洲午夜| 亚洲午夜激情免费视频| 亚洲欧美在线aaa| 亚洲欧美经典视频| 欧美一区二视频| 久久婷婷综合激情| 免播放器亚洲一区| 91久久久在线| 在线亚洲欧美视频| 亚洲女同精品视频| 久久久久免费视频| 欧美成人综合一区| 欧美护士18xxxxhd| 国产精品99免费看 | 久久精品国产精品亚洲精品| 久久国产加勒比精品无码| 久久亚裔精品欧美| 欧美国产日韩一区二区| 欧美日韩精品伦理作品在线免费观看| 欧美女同在线视频| 国产午夜一区二区三区| 在线精品国精品国产尤物884a| 亚洲精品国产系列| 欧美一区91| 亚洲国产精品久久| 牛牛精品成人免费视频| 国产精品影音先锋| 伊人男人综合视频网| 亚洲精品色婷婷福利天堂| 亚洲欧美激情一区| 久久中文在线| 亚洲精品一区二区三区av| 亚洲色图制服丝袜| 麻豆精品视频| 亚洲一区二区三区成人在线视频精品 | 亚洲性图久久| 老司机aⅴ在线精品导航| 欧美日韩在线播放三区| 精品91久久久久| 亚洲一区区二区| 六月天综合网| 亚洲欧美日韩成人高清在线一区| 久热精品在线视频| 国产精品一区免费视频| 亚洲激情国产| 欧美亚洲免费高清在线观看| 亚洲国产小视频| 久久久久久久一区| 免费成人在线观看视频| 欧美一二三视频| 国产精品电影在线观看| 亚洲娇小video精品| 久久久久久国产精品mv| 亚洲一区二区三区成人在线视频精品| 麻豆av福利av久久av| 久久综合色8888| 国产农村妇女精品| 欧美一区1区三区3区公司| 欧美岛国激情| 欧美精品不卡| 一区视频在线播放| 久久久久久亚洲综合影院红桃| 亚洲欧美日韩在线高清直播| 欧美三级视频| 亚洲天堂免费观看| 99精品99久久久久久宅男| 欧美成人dvd在线视频| 亚洲激情小视频| 欧美专区日韩专区| 另类成人小视频在线| 国产精品一卡二卡| 亚洲丝袜av一区| 亚洲精品国产精品国自产在线| 美女视频黄a大片欧美| 欧美性做爰猛烈叫床潮| 亚洲一区二区三区在线视频| 99国产精品久久久久久久| 欧美黄污视频| 欧美成人精品影院| 一区二区高清视频在线观看| 91久久久久久| 欧美大片专区| 欧美激情1区2区| 日韩一级精品| 亚洲五月六月| 精品动漫一区| 欧美福利在线| 欧美日韩免费在线视频| 亚洲亚洲精品三区日韩精品在线视频| 亚洲麻豆av| 欧美99久久| 亚洲日本精品国产第一区| 亚洲国产小视频| 国产精品你懂的在线欣赏| 久久国产福利国产秒拍| 久久精品中文字幕一区二区三区 | 欧美激情在线免费观看| 老鸭窝毛片一区二区三区| 欧美精选午夜久久久乱码6080| 国产精品一区一区三区| 美女视频黄免费的久久| 女主播福利一区| 激情久久久久久| 久久久久久91香蕉国产| 久久久www成人免费无遮挡大片 | 亚洲福利视频在线| 欧美日韩国产片| 欧美亚洲自偷自偷| 久久亚洲精品视频| 亚洲欧美一区二区三区久久| 久久综合九色| 亚洲一区日本| 一区二区欧美日韩| 欧美成人一品| 在线观看视频欧美| 亚洲午夜激情免费视频| 国产精品国产三级国产aⅴ入口 | 欧美成人资源| 国产精品视频免费| 欧美高清视频在线播放| 欧美福利电影网| 午夜精品电影| 免费不卡在线视频| 亚洲欧美激情四射在线日| 欧美成年人网| 亚洲美女电影在线| 久久精品国产一区二区三| 在线日韩中文字幕| 亚洲国产高清一区| 国产精品久久久久久久久久ktv | 一区二区三区欧美激情| 亚洲国产日韩欧美在线图片| 日韩网站免费观看| 在线精品观看| 羞羞答答国产精品www一本| 午夜视频在线观看一区二区三区| 亚洲欧美大片| 久久激情五月激情| 久久久亚洲国产美女国产盗摄| 国产精品视频精品| 香蕉久久a毛片| 久久综合九色综合欧美狠狠| 日韩视频免费观看高清完整版| 欧美xx69| 亚洲一区二区视频在线| 欧美a一区二区| 久久久久国产一区二区三区| 在线免费观看一区二区三区| 欧美人成网站|