Tag: 性能

Rails消耗外部API需要交错消费

我正在使用外部服务来搜索我的应用程序。 此搜索的结果需要从多个合作伙伴处收集,并需要10到90秒才能完成。 在收集结果的同时,我反复轮询我的搜索会话以收集已经准备好的结果。 当我有新的结果时,我会通过SSE将它们转移到客户端。 我每5秒左右轮询一次。 我怎么能运行这个过程而不用绝对地训练我的一个线程90秒(运行puma + nginx)。 我需要保持我的控制器状态,将SSE推送到请求客户端,并且不确定处理民意调查之间延迟的最佳方法。 非常感激

为什么我的防锈程序比ruby程序慢?

我在Ruby和Rust中编写了一个anagram finder,并且非常惊讶地发现Rust程序几乎比Ruby版本慢2倍。 Ruby版本: source = ARGV.first sorted_source = source.chars.sort.join anagrams = Hash.new File.open(‘/usr/share/dict/words’) do |f| f.each_line do |l| word = l.chomp sorted_word = word.chars.sort.join if anagrams[sorted_word] anagrams[sorted_word] << word else anagrams[sorted_word] = [word] end end end found = anagrams[sorted_source] puts found 锈版: use std::os; use std::io::{File, BufferedReader}; use std::collections::HashMap; fn main(){ let path = Path::new(“/usr/share/dict/words”); […]

ruby快速阅读标准

什么是从STDIN读取多个1000000个字符(整数)的最快方法,并将其拆分为一个字符整数(不是字符串)的数组? 123456 > [1,2,3,4,5,6]

在MongoDB中存储数据的有效方法:嵌入式文档与单个文档

我存储用户活动数据:当用户访问当前文章,主题或个人消息时,向他显示他在离线时添加了多少新评论和消息。 class SiteActivity include Mongoid::Document include Mongoid::Timestamps belongs_to :user belons_to :activity, polymorphic: true end 在这种情况下,我为每个文档存储一条记录。 另一种选择是使用嵌入式文档,因此所有用户活动都将存储在一个文档中: class SiteActivity include Mongoid::Document belongs_to :user embeds_many :user_activities validates :user_id, uniqueness: true end class UserActivity include Mongoid::Document include Mongoid::Timestamps embedded_in :site_activity belongs_to :activity, polymorphic: true end 所以现在我不需要搜索所有SiteActivities(许多记录)但我可以为current_user获取一个user_activity并通过它嵌入文档找到我需要的活动。 哪种方式更有效地存储和搜索数据? 我的普通用例是: 我有一个用户和一个post,所以我使用这些数据获取site_activity,以查看此用户上次访问post的日期。 我的第一个选择: activity = SiteActivity.where(user_id: current_user.id, activity_id: post.id, activity_type: post.class) […]

Rails / Ruby – 如何检查用户下载和上传速度?

如何以MB / s检查用户上传和下载速度?

为什么在OS X上的Ruby(而不是Python)中的分叉进程中`Time.utc`会变慢?

我看到了一个问题为什么Process.fork在OS X上的Ruby中变慢了? 并且能够确定Process.fork实际上不会使任务变得更慢。 但是,它似乎确实使Time.utc慢得多。 require ‘benchmark’ def do_stuff 50000.times { Time.utc(2016) } end puts “main: #{Benchmark.measure { do_stuff }}” Process.fork do puts “fork: #{Benchmark.measure { do_stuff }}” end 以下是一些结果: main: 0.100000 0.000000 0.100000 ( 0.103762) fork: 0.530000 3.210000 3.740000 ( 3.765203) main: 0.100000 0.000000 0.100000 ( 0.104218) fork: 0.540000 3.280000 3.820000 ( 3.858817) main: 0.100000 […]

当查询使用包含时,Rails如何处理has_many?

如果我有一个包含许多post的用户模型,Rails会在以下场景中对数据库执行多少次查询? class User has_many :posts # this is the main method in question… def has_posted? posts.any? {|p| p.posted? } end end # has an attr “posted” which is a boolean class Post belongs_to :user end # some controller users = User.includes(:posts).all # in the view 当我循环遍历has_posted?的返回post时,我在初始查询中使用的事实是否有任何魔力has_posted? 防止每个用户对posts表进行多次查找的方法?

如何在Ruby应用程序中找到性能瓶颈?

我编写了一个Ruby应用程序,它可以解析来自不同格式html,xml和csv文件的大量数据。 如何找出代码中哪些区域占用时间最长? 有没有关于如何提高Ruby应用程序性能的好资源? 或者您是否遵循始终遵循的任何性能编码标准? 例如,你总是加入你的字符串 output = String.new output << part_one output << part_two output << '\n' 或者你会用吗? output = “#{part_one}#{part_two}\n”

ruby如何生成树形结构表单数组?

我有一个数组,其中包含这样的项目列表 arr = [ {:id=>1, :title=>”A”, :parent_id=>nil}, {:id=>2, :title=>”B”, :parent_id=>nil}, {:id=>3, :title=>”A1″, :parent_id=>1}, {:id=>4, :title=>”A2″, :parent_id=>1}, {:id=>5, :title=>”A11″, :parent_id=>3}, {:id=>6, :title=>”12″, :parent_id=>3}, {:id=>7, :title=>”A2=121″, :parent_id=>6}, {:id=>8, :title=>”A21″, :parent_id=>4}, {:id=>9, :title=>”B11″, :parent_id=>2}, {:id=>10, :title=>”B12″, :parent_id=>2}, … ] 如果parent_id为nil那么它应该是父节点,如果parent_id不是nil则它应该在特定父节点下。 基于id和parent_id ,我想提供这样的响应: -A -A1 -A11 -A12 -A123 -A2 -A21 -B -B1 -B11 -B12 我怎么能产生上面提到的回应? 谢谢

Ruby Array concat vs + speed?

我做了Ruby的数组concat() vs +操作的小性能测试, concat()太快了。 但是我不清楚为什么concat()这么快? 有人可以帮忙吗? 这是我使用的代码: t = Time.now ar = [] for i in 1..10000 ar = ar + [4,5] end puts “Time for + ” + (Time.now – t).to_s t = Time.now ar = [] for i in 1..10000 ar.concat([4,5]) end puts “Time for concat ” + (Time.now – t).to_s