是否将大量数据传递给功能内存密集型?

时间:2017-06-08 13:52:39

标签: ruby-on-rails json performance benchmarking sidekiq

我们目前正在公开API端点以接收大量的JSON数据(1000 +)。

我目前的意见是:

  • 通过将原始数据作为函数参数传递给工作人员发送原始数据
  • 然后让后台工作人员(sidekiq)进行所有解析,处理等等。

但是,我的资深开发人员说传递原始值是内存密集型的。相反,他建议ff。实现:

  • 将原始数据保存到redis
  • 在后台工作程序中获取redis密钥
  • 然后让sidekiq进行处理(JSON.parse等等)

但对我来说,这只是额外的开销和过早优化的情况。

我已经将大量数据传递给函数。

代码只是简单地将数据传递给函数:

RandomClass.new(raw_data)

Calculating -------------------------------------
18920 json objects    40.000  memsize (     0.000  retained)
                      1.000  objects (     0.000  retained)
                      0.000  strings (     0.000  retained)
3784  json objects    40.000  memsize (     0.000  retained)
                      1.000  objects (     0.000  retained)
                      0.000  strings (     0.000  retained)
   1  json objects    40.000  memsize (     0.000  retained)
                      1.000  objects (     0.000  retained)
                      0.000  strings (     0.000  retained)

这是使用benchmark-memory

老实说,我更关心解析JSON数据时的内存分配,而不是通过将值传递给后台worker来分配内存。

那么,将大量数据作为内存密集型传递给函数的说法是否有效?

0 个答案:

没有答案