2012-11-29 66 views
0

我有一串〜10,000個字符串和整數,我想要序列化到Rails網頁中。最終的目標是將數組放入JavaScript數組中,但我很高興將它作爲文本blob來解析客戶端。將數組快速轉換爲ruby中的字符串

我無法緩存字符串,這些值會更改每個請求。

這需要25ms的〜在我的VPS:

arr = ["ABCD", 1] * 10000 # always in string, number, string, number order 
start = Time.now 
arr.to_s 
duration = (Time.now - start)*1000 
puts "took #{duration}ms" 

我們可以做得更好?

編輯

@澤的答案是正確的,to_json是快速和良好的方法來做到這一點。我被扔掉了,因爲to_json在Rails環境中被覆蓋。改爲使用JSON.generate(arr)

+0

哎呀,由10關掉 – spike

回答

6

隨着陣列變長,JSON速度更快。正如我用["ABCD", 1] * n進行測試時,當n < 50,to_s更快,但是當n > 50,to_json更快。

arr = ["ABCD", 1] * 10000 # always in string, number, string, number order 

start = Time.now 
arr.to_s 
duration = (Time.now - start)*1000 
puts "took #{duration}ms" 

require "json" 
start = Time.now 
arr.to_json 
duration = (Time.now - start)*1000 
puts "took #{duration}ms" 

# => 
# took 7.546628ms # to_s 
# took 4.684186ms # to_json 
+1

aha!我太緊張了,在我的rails環境中嘗試一些東西。我相信rails會重寫to_json來做一些衛生工作,切換到JSON.generate(arr),我看到的時間與我們在這個人爲的例子中得到的結果類似。謝謝! – spike

相關問題