Java 位操作的性能到底有多高

前幾天和同事討論設(shè)計(jì)的問(wèn)題蹋宦,關(guān)于用戶(hù)屬性的字段,表示這個(gè)用戶(hù)擁有的權(quán)限咒锻,比如對(duì)這個(gè)功能系統(tǒng)是否有5個(gè)權(quán)限,權(quán)限1有沒(méi)有守屉,權(quán)限2有沒(méi)有......惑艇。 這種屬性具有一種特征,就是非真即否拇泛,只用兩個(gè)值就可以表示滨巴。這時(shí)我們可以想到計(jì)算機(jī)的芯片的基數(shù)單元就是有電還是沒(méi)有電,也就是和計(jì)算機(jī)里面有關(guān)的一切內(nèi)容都是用bit表示的俺叭。

同樣恭取,我們對(duì)這類(lèi)值的存儲(chǔ),有很多人會(huì)偏向于這樣村熄守,5個(gè)權(quán)限分別用5個(gè)數(shù)表示蜈垮,如果都有權(quán)限耗跛,表示出來(lái)是,“1攒发,2调塌,3,4惠猿,5”羔砾。對(duì),在Java中通過(guò)判斷這字符串中有沒(méi)有相應(yīng)的數(shù)值偶妖,就知道有沒(méi)有這個(gè)權(quán)限姜凄。比如“1,2趾访,3檀葛,5” 這個(gè)字符串屬性的人就沒(méi)有4的權(quán)限。

在我看來(lái)腹缩,這種操作成本很高屿聋,需要大量的cpu進(jìn)行字符串的匹配工作。因?yàn)樵诨A(chǔ)類(lèi)型中藏鹊,String是最消耗內(nèi)存的润讥。而計(jì)算機(jī)對(duì)于二進(jìn)制位操作最為擅長(zhǎng),我們可以把剛才題例中的5個(gè)權(quán)限這樣寫(xiě)盘寡,11111楚殿,這個(gè)是個(gè)二進(jìn)制,換算成十進(jìn)制數(shù)為:63竿痰,通過(guò)&或|操作既能取出對(duì)應(yīng)操作位的值(可參考相關(guān)的符號(hào)操作)脆粥。

下面我們來(lái)看個(gè)例子:

publicstaticvoidtest() {

     intflagInt= 432;

     intloop= 1000000000;

     StringstrFlag="1,2,4";

     longtime1= System.currentTimeMillis();

     while(loop> 0) {

           intb=flagInt& 7;

           loop--;

     }

     System.out.println("flag :"+(System.currentTimeMillis() -time1));

     loop= 1000000000;

     longtime2= System.currentTimeMillis();

     while(loop>0) {

           String[]trpp=strFlag.split(",");

           loop--;

     }

     System.out.println("Base :"+(System.currentTimeMillis() -time2));

}

結(jié)果為:

flag :2

Base :121592

從結(jié)果上看,這個(gè)性能差了可不是一點(diǎn)影涉。

總結(jié)变隔,對(duì)于一些標(biāo)志位的存儲(chǔ)和判斷來(lái)看,要選擇合適的存儲(chǔ)結(jié)構(gòu)蟹倾,非常重要匣缘,一方面在存儲(chǔ)上更加節(jié)約時(shí)間,另一方面進(jìn)行計(jì)算喝判斷的時(shí)候也更加節(jié)約CPU時(shí)間鲜棠,雖然現(xiàn)在計(jì)算機(jī)發(fā)展非臣〕快,CPU和存儲(chǔ)都在飛速的發(fā)展豁陆,但是對(duì)于計(jì)算機(jī)開(kāi)發(fā)人員還是多注意這方面的內(nèi)容柑爸,節(jié)約資源。往往最后的程序緩慢就是這些微不足道的小問(wèn)題形成的盒音。

本文檔為原創(chuàng)表鳍,轉(zhuǎn)載請(qǐng)注明出處馅而。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市进胯,隨后出現(xiàn)的幾起案子用爪,更是在濱河造成了極大的恐慌,老刑警劉巖胁镐,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偎血,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡盯漂,警方通過(guò)查閱死者的電腦和手機(jī)颇玷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)就缆,“玉大人帖渠,你說(shuō)我怎么就攤上這事〗咴祝” “怎么了空郊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)切揭。 經(jīng)常有香客問(wèn)我狞甚,道長(zhǎng),這世上最難降的妖魔是什么廓旬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任哼审,我火速辦了婚禮,結(jié)果婚禮上孕豹,老公的妹妹穿的比我還像新娘涩盾。我一直安慰自己,他們只是感情好励背,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布春霍。 她就那樣靜靜地躺著,像睡著了一般椅野。 火紅的嫁衣襯著肌膚如雪终畅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天竟闪,我揣著相機(jī)與錄音,去河邊找鬼杖狼。 笑死炼蛤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蝶涩。 我是一名探鬼主播理朋,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼絮识,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了嗽上?” 一聲冷哼從身側(cè)響起次舌,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兽愤,沒(méi)想到半個(gè)月后彼念,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浅萧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年逐沙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洼畅。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吩案,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帝簇,到底是詐尸還是另有隱情徘郭,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布丧肴,位于F島的核電站残揉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闪湾。R本人自食惡果不足惜冲甘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望途样。 院中可真熱鬧江醇,春花似錦、人聲如沸何暇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)裆站。三九已至条辟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宏胯,已是汗流浹背羽嫡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肩袍,地道東北人杭棵。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像氛赐,于是被迫代替她去往敵國(guó)和親魂爪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子先舷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容