2012-04-05 229 views
2

爲了獲得最大負載的速度和頁面效率,是它最好有:更適合加載速度:較大的JSON文件或需要處理的小型CSV文件?

  1. 一個18MB JSON文件,其中包含的詞典的陣列,其可以裝入,並開始使用作爲本地JavaScript對象(例如var myname = jsonobj[1]['name'])。
  2. 一個4MB的CSV文件,我需要使用jquery.csv插件讀取,然後使用查找來參考:var nameidx = titles.getPos('name'); var myname = jsonobj[1][nameidx])。

我並不真的期待任何人給我一個明確的答案,但一般的懷疑是非常有用的。或者如何測量技巧 - 也許我可以使用開發工具檢查加載速度和效率之間的權衡。

我的懷疑是,使用CSV中的原生JavaScript對象的任何額外效率都會超過CSV文件的大小,但我想知道其他人是否也這麼認爲。

+9

基準,基準,基準。 – 2012-04-05 16:28:48

回答

2

你現在的情況是什麼?你是否正在編寫一些內部網站,你知道瀏覽器用戶使用什麼,並有合理的帶寬期望,或者這是一個面向公衆的網站?

如果您可以控制人們使用哪些瀏覽器,例如因爲他們是您的員工,請考慮利用客戶端緩存。如果你試圖說服人們使用這些數據,你應該考慮將數據分成塊並通過XHR提供。

如果你真的要爲這一切在一次,然後:

  1. 用gzip
  2. 你在客戶端做數據的重處理?你實際上可能會經歷多少項目?如果你在任何特定的會話中只訪問少於1,000個,那麼我想想知道14MB的節省是值得的。另一方面,如果你一直在比較各種各樣的東西(因爲你正在做某種可視化或任何事情),那麼我認爲JSON會得到回報。

換句話說:這取決於。基準。

+0

謝謝,真的很有幫助的答案。這是一個面向公衆的網站,用戶可以使用桌面或移動瀏覽器。是的,我將使用所有數據,而且我不需要進行繁重的處理,但是我需要參考每個對象中的每個項目。 (這是一個可視化。)任何建議好的基準測試工具? – Richard 2012-04-05 16:46:00

+0

如果可視化運行的時間足夠長並且定期修改數據,那麼我會想象處理時間最終會佔主導地位:如果頁面一旦出現動畫問題,那麼頁面加載速度無關緊要。但是如果它是靜態的(如動態生成的圖像或情節),那麼頁面加載時間就是你關心的。如果這是一個動畫,我會說用csv技術寫出來,看看它在你的手機上「足夠好」。基本上,只需在可以創建的最有限的條件下進行功能測試,或者願意要求用戶使用。 – quodlibetor 2012-04-05 17:02:54

+0

這就是說,不,我不知道任何可視化測試框架。雖然我根本不知道這個空間,所以它們肯定存在。但是可視化本身通常用作底層平臺的測試,所以你更多的是編寫測試,然後尋找一個。我敢打賭,如果你寫了兩個版本,人們會對你的結果非常感興趣。 – quodlibetor 2012-04-05 17:04:34

0

4MB vs 18MB?哪裏有問題? Json現在只是標準格式,csv也許是一樣的好,如果你使用它也可以。我的想法。

0

14Mb的數據是巨大的差異,但我會嘗試首先服務於服務器端壓縮的內容和因此,這些請求進行比較(可能CSV內容的長度再次會更好)

然後,我也想嘗試創建jsperf都與CSV和JSON數據中的某些數據操作測試與真正的測試案例/常見的用法

4

你有沒有考慮過使用gzip傳遞JSON內容 - 這裏是一些基準在gzip上http://www.cowtowncoder.com/blog/archives/2009/05/entry_263.html

+1

@Richard @Richard如果內容是gzip,文件大小的差異可能可以忽略不計,試試吧,只需使用'gzip'創建一個gzip版本的文件 – 2012-04-05 16:38:27

+0

@JuanMendes你是對的 - 0.8MB與1MB!所以它根本不重要 - 謝謝。 – Richard 2012-04-05 17:15:24

0

這很大程度上取決於與用戶的連接帶寬。

除非這隻會被超快速連接到服務器的人所使用,否則我會說最好的選擇是一個更小的文件,它只包含您需要立即顯示的實際信息,然後根據需要加載更多數據。

相關問題