2

我有一個基於D3 v3的圖表,使用內置的縮放行爲來處理拖盤功能。 zoom處理程序正在使用​​更新更順利比只是調用更新每個平移操作。使用鼠標右鍵而不是左鍵更好地使D3 v3縮放/拖動性能更好?

當我開始在圖表中使用大量數據時,我注意到使用鼠標右鍵而不是左側拖動時更新的性能明顯更好。在深入挖掘Chrome DevTools之後,我發現兩種操作之間存在着非常奇怪的差異。

這是右側拖動以平移圖表時的大塊時間軸視圖。

Timeline Chart while Right Mouse Dragging

這是我所期望的時間表的樣子,幀更新是相對正常和正在以最快的速度被稱爲是可以的。更新爲〜25ms,重新繪製〜60ms。 〜每幀85毫秒。

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

Timeline Chart while Left Mouse Dragging

正如你可以看到每個幀正在顯著更多的時間(〜175ms之間),與一次更新的結束和下一個開始之間巨大差距的時間。在時間軸中沒有可見的處理,只有少數事件處理程序(不是我加的,似乎是D3)的事件處理程序,最多隻需0.23ms。

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

我已經看到了Chrome,但是一些處理的一些優化拖動操作過程之前,並且已經看到的速度放緩在此期間的HTTP流量,但純客戶端更新沒有。

這是一個已知的問題? D3會爲左拖動做些特別的事情嗎?有沒有人見過這個?

+0

剛剛嘗試添加'.on('mousemove')'防止默認處理程序到處理縮放行爲的相同元素,這完全解決了這個問題。奇怪的是,我從來沒有在其他地方看到過這種行爲。謝謝您的幫助! – XenoByteZero

回答

0

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

調用preventDefault()將其禁用。

相關問題