2012-11-29 44 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

相关问题