千萬百萬級別點繪製

2021-08-16 22:53:10 字數 641 閱讀 6742

眾所周知我們的輸出裝置的解析度一般都是 1000*1000左右,也就是說輸出裝置做多能展現1百萬個點畫素,超出的畫素將覆蓋在已有畫素上面。

其實我們並不需要繪製那麼多的點,我將超出的點可以不繪製,這裡介紹一種簡單的點繪製過濾方法,直接看**:

儲存畫素位置的map

std::mapm_pointexist;

//這裡使用64位長整型編碼乙個畫素位置,前32為x,後32位y。

unsigned long long a = (unsigned long long)((((unsigned long long)x)<<32) +y);

std::map::iterator it = m_pointexist.find(a);

if (it != m_pointexist.end())

else

m_pointexist[a] = true; //記錄

其實目前資訊點的幾何分布還是在一定區域比較多,例如智慧型城市中,資訊點主要在大型城市中,周圍區域資訊可能沒那麼多,這就跟社會學科的二八定論一樣,所以會造成在較小區域會有較多的資訊點,所以在一定比例尺下中心區域顯示的點會非常多,如果採用過濾繪製,將大大提高點的繪製效率,目前使用以上方法,並且將點繪製成ellipse,每秒不低於10w的繪製速度完全沒問題,實測還打到13w。

Go百萬級別併發實踐

golang和傳統基於 os 執行緒和程序實現不同,go語言的併發是基於使用者態的併發,這種併發方式就變得非常輕量,能夠輕鬆執行幾萬併發邏輯。go 的併發屬於 csp 併發模型的一種實現,csp 併發模型的核心概念是 不要通過共享記憶體來通訊,而應該通過通訊來共享記憶體 這在 go 語言中的實現就是...

千萬級 百萬級資料刪除優化

在mysql上面刪除大量資料 千萬級 由於不是清空資料,故不能使用truncate 語句 有個truncate可參考 mysql delete語句與truncate table語句 在正常delete下,刪除十分緩慢 由於索引的原因,每次刪除都要相應的更新索引,越往後索引碎片越多,即越往後越慢 完整...

千萬級 百萬級資料刪除優化

在mysql上面刪除大量資料 千萬級 由於不是清空資料,故不能使用truncate 語句 有個truncate可參考 mysql delete語句與truncate table語句 在正常delete下,刪除十分緩慢 由於索引的原因,每次刪除都要相應的更新索引,越往後索引碎片越多,即越往後越慢 完整...