2013-08-29 68 views
1

將網絡操作和解析分離到單獨的線程中可以獲得好處嗎?我意識到兩者都應該在非UI線程上執行;那不是我的問題。聯網操作是否應該在網絡線程上運行,然後將數據傳遞給解析線程進行解析?在單獨的線程上進行網絡操作和解析

這裏有一些權衡,我看到:

  • 這兩種類型的操作不能阻止對方
  • 這兩種類型的操作可以放在(?)在單獨的線程池中並單獨調諧

con

  • 上下文切換會引入一些延遲
  • 更多的線程,更復雜的
  • 流解析變得困難/不可能
+1

我認爲,只有當您需要在解析「prev」數據的同時下載「下一個」數據時,纔可以使用解析線程......在其他情況下,如同時解析/同時(流解析器)作爲下載網絡線程應該足夠 – Selvin

+1

imo,這取決於要解析的數據的影響。根據我的經驗,如果與需要下載數據的時間相比較,解析複雜json的影響是微不足道的。 – Blackbelt

+0

@Selvin好的一點,我已經添加了解析流的難點/不可能 –

回答

1

你幾乎回答了自己的問題。除非你正在執行的解析需要很長時間,否則真的不會。網絡操作幾乎總是會成爲應用程序的瓶頸,所以考慮一下你正在執行的處理是否會削減寶貴的時間,以便線程可以從互聯網下載。

對於分析需要幾毫秒到幾毫秒的大量應用程序,我沒有看到與用戶有很大差異。如果你的解析需要相當長的時間,你可以創建一個單獨的線程來解析,就像你說的,並且在它們之間創建一個生產者/消費者關係。這會給你的應用程序增加很多複雜性,除非你已經執行某種分析來確定這是一個問題,否則我認爲它不值得。

確保您沒有對應用程序進行過早優化,並且已經對其進行了配置(或確切知道)以確定這是否有必要。 :)

+0

謝謝,這是關於我的想法是在哪裏。我只是需要一些確認。 –

相關問題