簡體   English   中英

為什么字節映射比位圖更快?

[英]Why is byte map faster than bit map?

我讀過“垃圾收集手冊”。 它說當做卡表時,他們使用字節圖而不是位圖,並說它比位圖更快,是否是由於高速緩存線? 但正如我所知,緩存行通常是64字節,如果我們對字節進行更改,競爭爭用仍然存在,其他cpu仍會使該行無效,它與位圖相同,任何人都可以幫助我嗎?

不確定我是否正確上下文,但總的來說:

  1. 位圖訪問

    需要地址操作和讀寫整個BYTE / WORD / ...因為大多數架構不支持位讀/寫內存訪問。

    所以對於8位位圖來說:

     BYTE map[]; 

    讀取的代碼是:

     readed_bit=(map[bit>>3]>>(bit&7))&1; 

    組:

     map[bit>>3]|=1<<(bit&7); 

    明確:

     map[bit>>3]&=255^(1<<(bit&7)); 

    bit是您要訪問的位。 如您所見,需要進行掩蔽和位移。

  2. BYTE地圖訪問

    這可以在大多數架構上直接訪問

     readed_byte=map[byte]; 

    組:

     map[byte]=1; 

    明確:

     map[byte]=0; 

    其中byte是您要訪問的BYTE。 正如您所看到的,如果只是布爾值存儲在單個BYTE中,則會浪費內存空間。

因此,除非你得到專門用於處理位圖和平面的硬件 ,否則BYTE貼圖會更快...但是對於每個規則都有一個例外,因此有些算法你已經獲得了掩碼地址和位掩碼,在這種情況下位圖是比字節映射更快或更快......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM