通常,指針的大小等於CPU的「寬度」,因此指針通常可以訪問每個系統地址。在32/64位系統上使用16位指針的C++
在一個64位系統上使用一個16位指針應該允許在同一個內存區域中配置4個16位指針作爲一個64位指針,然而一個16位指針只允許尋址2^16個位置。
我的想法不是關於節省內存,而是關於潛在的性能優勢。這個想法基本上是以65635塊的形式分配內存,並使用16位指針來解決這些「虛擬」16位地址空間。
這可能嗎?我是否應該嘗試這樣做,即它是否會提供性能優勢?
通常,指針的大小等於CPU的「寬度」,因此指針通常可以訪問每個系統地址。在32/64位系統上使用16位指針的C++
在一個64位系統上使用一個16位指針應該允許在同一個內存區域中配置4個16位指針作爲一個64位指針,然而一個16位指針只允許尋址2^16個位置。
我的想法不是關於節省內存,而是關於潛在的性能優勢。這個想法基本上是以65635塊的形式分配內存,並使用16位指針來解決這些「虛擬」16位地址空間。
這可能嗎?我是否應該嘗試這樣做,即它是否會提供性能優勢?
更可能是一個性能命中。現代CPU可以輕鬆訪問32位和64位數據寬度。如果您有16位數據,則需要屏蔽等,以計算CPU中的實際地址。
進一步閱讀的指針是未對齊訪問。
如果你有一個32/64位的系統,它有足夠的內存使得你的方案的優化好處被實現它的複雜性所抵消。你需要確保它能夠正常工作,並且你的方案比直接指針訪問要慢得多。
要知道的唯一方法是嘗試和配置文件。但我懷疑它。 – PlasmaHH
性能好處?你可以做到這一點並進行測試,但我沒有看到爲什麼它應該更快的理論原因。恐怕你可以開始從amd64上的32位到64位寄存器移動數據,因爲沒有什麼好的理由,將你的16位指針轉換爲CPU使用的真正的64位地址...... – 2011-11-29 13:53:55
爲什麼你認爲這會提高性能?你認爲這樣會更快,爲什麼? – sth