在ruby中快速将数组转换为字符串

时间:2012-11-29 18:28:31

标签: ruby

我有一个大约10,000个字符串和整数的数组,我想序列化到Rails网页。最终的目标是将数组放入JavaScript数组中,但我很高兴将它作为文本blob,然后我解析客户端。

我无法缓存字符串,值会更改每个请求。

我的VPS需要大约25ms:

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"

我们可以做得更好吗?

修改

@ sawa的回答是正确的,to_json是快速的,这是一个很好的方法。我被抛弃了因为Rails环境中的to_json被覆盖了。请改用JSON.generate(arr)

1 个答案:

答案 0 :(得分: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