簡體   English   中英

D3 v3的縮放/拖動性能用鼠標(而不是鼠標)更好?

[英]D3 v3 zoom/drag performance better with right mouse rather than left?

我有一個基於D3 v3的圖表,使用內置的Zoom行為來處理拖移功能。 zoom處理程序正在使用requestAnimationFrame進行更新,這比僅對每個平移操作調用update更為平穩。

當我開始在圖表中使用大量數據時,我注意到使用鼠標右鍵(而不是鼠標左鍵)在拖動過程中的更新性能明顯更好。 在深入研究了Chrome DevTools之后,我發現這兩個操作之間有一個非常奇怪的區別。

右拖動以平移圖表時,這是時間軸視圖的一部分。

鼠標右鍵拖動時的時間線圖

我希望時間表看起來像這樣,幀更新相對定期,並且被稱為盡快。 〜25ms用於更新,〜60ms用於重畫。 每幀總計約85毫秒。

當向左拖動時,這是在同一圖表中具有完全相同數據的時間線。

鼠標左鍵拖動時的時間線圖

如您所見,每個幀花費的時間要多得多(〜175ms),一幀更新結束與下一幀更新之間存在巨大的時間間隔。 時間軸中沒有可見的處理,只有selectstart事件處理程序的一些實例(我沒有添加,似乎是D3),最多花費0.23ms。

我刪除了在圖表上可以找到的所有其他事件處理程序,但沒有任何效果

我之前見過Chrome在拖動操作過程中對某些處理進行了一些優化,並且在那段時間里HTTP流量的速度有所下降,但是在純客戶端更新上卻什么也沒有。

這是一個已知的問題? D3對左阻力做一些特殊的事情嗎? 誰看過這個嗎?

有一個默認處理程序會影響您的時間和性能。

調用preventDefault()將其禁用。

暫無
暫無

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

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