Tag: 表演

真正的sinatra(ruby / rack)after_filter的最快方法是什么?

好的,这是一项简单的任务。 在我将html渲染到客户端后,我想用请求中的信息执行db调用。 我正在使用sinatra,因为它是一个轻量级的微框架,但是如果它更快/更容易(Rack?),我真的想用ruby做任何东西。 我只想获取url并根据url将客户端重定向到其他位置。 那么如何使用rack / sinatra进行真正的after_filter。 而after_filter我的意思是在响应发送给客户端之后。 或者,如果没有线程,这是不可行的? 我分叉sinatra并在filter之后添加,但是没有办法刷新响应,即使是send_data,假设流文件(显然是二进制文件)等待after_filters。 我已经看到了这个问题: 多部分响应在ruby中,但答案是针对rails。 我不确定它是否真的刷新了对客户端的响应,然后允许后续处理。 Rack :: Callbacks有一些回调之前和之后,但即便看起来它们会在响应被发送到客户端之前运行这里的Rack :: Callbacks实现(添加注释): def call(env) @before.each {|c| c.call(env) } response = @app.call(env) @after.each {|c| c.call(env) } response #i am guessing when this method returns then the response is sent to the client. end 所以我知道我可以用rake通过shell调用后台任务。 但是没有太多也是好的…还有NeverBlock但是对于执行一个单独的进程而不延迟响应是好的还是它仍然会使应用程序等待整体(我认为它会)? 我知道这很多,但简而言之,简单的after_filter在ruby / sinatra / rack中发送响应之后真正运行。 […]

加速日期#parse&Date#strptime在Ruby中,更优雅的方式还是最佳实践?

此问题源于处理带有日期格式字符串的大型文本的另一个性能问题。 将数据从csv文件加载到ruby数组后,效率最低的部分将360,000个日期格式化的字符串对象解析为日期对象。 它需要超过50%的CPU时间。 关于在SO中解析字符串到日期的最有效方法存在一些问题。 但是大多数都已经过时了,并且他们都没有考虑过这种情况,即在所有这360,000条记录中只有5个日期对象真正应该被解析。 更常见的是,对于企业应用程序,所需的所有日期可能在5年或10年之内,即大约2,000到4,000个日期。 如果我需要从文件或数据库中获取一天只有100个数据记录,则不需要99%的CPU时间用于解析日期和创建日期对象。 这是我的尝试 定义StaticDate类以通过存储之前解析的日期对象来提高性能。 require ‘date’ class StaticDate @@all={} def self.instance(p1 = nil, p2 = nil, p3 = nil, p4 = Date::JULIAN) @@all[p1*10000+p2*100+p3] ||= Date.new p1, p2, p3, p4 end def self.parse( date_str) @@all[date_str] ||= Date.parse date_str end def self.strptime( date_str, format_str) @@all[date_str + format_str] ||= Date.strptime date_str, format_str end […]

一旦我的应用程序爬升到> 1000个对象,太阳黑子Solr减速为野兽

我很好奇是否有人注意到Sunspot-Solr的任何缩放问题。 即使我删除了所有可搜索的参数,它本身只是反对原始类; 在我的本地加载还需要5到8秒,生产时需要4到5秒。 有没有其他人能够扩大太阳黑子 – 索尔? 有哪些常见问题? 怎么能更深入地研究这个? 这是单个请求的Solr日志: Solr Select (208.1ms) {:rows=>20, :start=>0, :q=>”*:*”, :sort=>”score desc”, :fq=>[“type:Organization”, “published_b:true”, “updated_at_d:[2009\\-02\\-03T16\\:11\\:55Z TO *]”]} Solr Select (5.5ms) {:rows=>20, :start=>0, :q=>”*:*”, :sort=>”score desc”, :fq=>[“type:Organization”, “published_b:true”, “updated_at_d:[2009\\-02\\-03T16\\:11\\:55Z TO *]”]} Solr Update (12.6ms) UserActiveRecord::BaseUser 2UserBob2009-09-28T21:00:27ZMarleybob.marley@gmail.comBob MarleyMarleyBobbob.marley@gmail.comBob Marley Solr Update (487.7ms) Completed in 12632ms (View: 11633, DB: 228) | 200 OK […]

提高function性能

我正在整理一个小程序,检查Brocard问题的解决方案或所谓的Brown Number ,我首先在ruby中创建了一个草稿: class Integer def factorial f = 1; for i in 1..self; f *= i; end; f end end boundary = 1000 m = 0 # Brown Numbers – pair of integers (m,n) where n factorial is equal with square root of m while m <= boundary n = 0 while n <= […]

IronRuby表现如何?

虽然我知道IronRuby尚未准备好让全世界使用它,但我想知道是否有人在这里试过它并测试它在原始性能方面与其他Rubies的对比度如何? 如果是这样,结果是什么,你是如何衡量绩效(哪些基准等)? 编辑 :IronRuby团队在http://ironruby.info/上维护一个关于他们如何与Ruby MRI 1.8进行比较的网站。 在规格通过率表下方,他们还有一些关于IronRuby如何在这些规范上执行的信息。 此表不会持续更新,但我认为它们经常更新(您可以在页面顶部看到上次更新)。

如何提高jRuby加载时间?

我必须等待很长时间(与我的朋友机器相比)来执行jRuby上的脚本,特别是在我运行rake任务或测试时。 我试过jRuby版本1.3.1和1.4.1有和没有ruby-debug gem,每个配置都出现同样的问题。 问题很简单:有没有办法改进jRuby加载过程? ..或者我的jvm配置或jRuby安装有什么问题(我通过rvm使用jRuby – ruby​​版本管理器)?