我正在使用Isolates現在想知道如果使用IndexedDB在隔離區之間共享數據是一種很好的溝通方式?具體來說,我想讓一個Isolate能夠寫入它,然後告訴其他Isolates它們可能只讀它。這些數據一旦寫入就會被認爲是不變的,並且相當大。我想這樣做的主要原因是因爲我不想將6MB Map發送給3個不同的隔離區,因爲它對程序有點密集。使用IndexedDB的隔離區之間的共享內存
3
A
回答
0
如果你想將數據存儲在IndexedDB中,無論如何這沒什麼問題。 如果你這樣做只是爲了優化溝通,我不認爲這是直接發送的改進。序列化/反序列化通常是CPU密集度最高的部分。 使用IndexedDB另外寫入一次並從慢速磁盤讀取三次。
2
Web工作人員允許您在工作人員之間傳遞數組緩衝區而無需複製。但是,一旦將數組緩衝區傳遞給另一個工作人員,原始工作人員將無法訪問其內容。
因此,您可以嘗試將數據結構存儲在數組緩衝區中以利用此功能。
看到這個mdn article和html5rocks。
因此對於Dart,將您的數據存儲在ByteData中,然後在通過dartjs編譯時,不應複製,而是轉移。注意:Mozilla也正在做一些實驗,使用多個Web工作者對陣列緩衝區進行共享可變訪問。這是爲了讓emscripten可以將多線程的c代碼編譯爲javascript。這種共享訪問可能需要一段時間才能實現標準化和廣泛實施。
相關問題
- 1. 在PC之間共享Delphi中的公共內存區域
- 2. 在不同的Web瀏覽器之間共享IndexedDB存儲
- 3. python:StringIO之間共享的內存?
- 4. 線程之間的共享內存
- 5. unix中共享內存和管道之間的區別?
- 6. 共享庫(.so)和命令之間的隔離
- 7. 時間共享和空間共享algotitms之間的區別
- 8. 用戶空間和內核線程之間的共享內存
- 9. 在刪除共享內存之前從共享內存中分離
- 10. IPC與共享內存的共享內存有什麼區別?
- 11. 當同時使用MPI和共享內存時,omp_get_wtime()和mpi_wtime()之間的區別
- 12. 在模塊之間共享內存
- 13. CUDA:在不同內核之間使用共享內存
- 14. 與其他用戶共享IndexedDB存儲
- 15. 進程之間如何共享內存區
- 16. 用戶模式和內核模式之間的共享內存
- 17. AGP內存之間的差異,共享圖形內存
- 18. 進程之間不共享共享內存
- 19. 通過共享內存進程之間共享指針IPC
- 20. 共享/重新加載localStorage,IndexedDB,WKWebViews之間的cookie
- 21. 通過使用mmap在進程之間共享內存
- 22. 在兩個程序之間使用共享內存
- 23. 如何在CUDA的內核調用之間使用共享內存?
- 24. NDK中的共享內存區域
- 25. 2個進程(應用程序)之間的共享內存
- 26. 如何在共享內存的同一區域上工作的兩個進程之間共享鎖定?
- 27. 用戶之間Drupal內容共享
- 28. 控制如何apc.shm_size在字節碼緩存和共享內存之間共享
- 29. 保護內核和用戶空間之間的共享內存段
- 30. 使用類內部的類提升進程間共享內存
你不認爲會有緩存來提高性能?我的主要疑問是,只是在網絡工作人員之間發送意味着該程序必須在將數據發送到每個線程之前對大量數據(我的情況爲6MB Map)進行深層複製,而不是從相同的緩存參考中讀取數據。 – Salgat
沒想到這一點。我會對它進行基準測試,看看哪些性能更好。 –