我正在使用ImmutableJS來存儲所有狀態的React和Redux應用程序。 該應用程序從約100 Hz的傳感器接收數據。我需要繪製一個實時更新的圖形並顯示這些數據。 我一直在使用React-Vis作爲圖,問題是它需要一個對象數組而不是ImmutableJS數據結構。從圖中的Redux存儲中可視化ImmutableJS數據
我已經通過了ImmutableJS數據結構轉換爲一個數組這樣解決了這個:
這工作,但我遇到的問題是巨大的滯後,如果我跑這個真實的數據,我想是因爲它必須始終創建一個新陣列。
如何爲此創建高性能解決方案並仍使用ImmutableJS?
聽起來好像你每秒發送100次改變狀態的動作。我認爲這可能會使事情本身顯着減慢,即使沒有實際嘗試以100fps重新渲染該數據的圖形的額外開銷。不確定是否使用'toIndexedSeq()。toArray()'是問題。如果你跳過這個圖,只做一些簡單的事情,比如'console.log(this.props.HEGPercentage)'。它是否仍然使頁面滯後(難以滾動,或者輸入字段或類似內容)?試圖確定是否值得嘗試優化'toIndexedSeq()。toArray()'。 – jonahe
我有一些代碼來模擬傳感器數據輸入,並將其設置爲應該類似的速率並且沒有滯後。現在我還重構了Reducer以使用常規JS對象而不是Immutable,並且它的性能似乎有所提高。如果可能的話,我仍然希望使用Immutable,以便與應用程序的其他部分保持一致... –
好的。傳感器數據是否如此精確(或波動如此之大)以至於數值幾乎不再出現?如果沒有,也許可以通過某種緩存進行優化。如果這些值是不必要的精確(也許屏幕分辨率無法表示0.00001和0.00002之間的差異),也許輸入數據可能會被舍入,以致值不會經常更改(重新渲染更少)並且重複頻率更高(更適合緩存)。也許看看https://github.com/reactjs/reselect。 – jonahe