• 2.3.6 :021 > ENV['RUBY_VERSION']
     => "ruby-2.3.6"
    .3.6 :019 >  Benchmark.measure { maxa(1000)}
     => #<Benchmark::Tms:0x00007f8a60a4a780 @label="", @real=2.4335659999924246, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=2.42, @total=2.42>
    2.3.6 :020 > Benchmark.measure { maxf(1000)}
     => #<Benchmark::Tms:0x00007f8a60a3be88 @label="", @real=0.5101689999864902, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.5100000000000002, @total=0.5100000000000002>
    
     :001 > ENV['RUBY_VERSION']
     => "ruby-2.5.0"
     :022 > Benchmark.measure { maxa(1000)}
     => #<Benchmark::Tms:0x00007fe484845d30 @label="", @real=0.46752000000560656, @cstime=0.0, @cutime=0.0, @stime=0.00017400000000000054, @utime=0.46631599999999995, @total=0.46648999999999996>
     :023 > Benchmark.measure { maxf(1000)}
     => #<Benchmark::Tms:0x00007fe48282dc78 @label="", @real=0.6195719999959692, @cstime=0.0, @cutime=0.0, @stime=0.0003689999999999978, @utime=0.6181120000000001, @total=0.6184810000000001>
    

    2.3 和2.5的测试,确实也是反过来的,而且差别不小。

    我想说的是楼主的假设是不是不够科学? [].max 虽然会返回新对象,但是它的执行成本明显要低于max(a,b), 执行过程本身就会创建一大波对象(都放在ObjectSpace中的),调用越少消耗越少,虽然栈调用的消耗相对较小。

    不能简单地根据调用是否返回新对象来判断其性能吧? @quakewang

    这个测试用例中被测试的调用是在each中的,不知道虚拟机解释的时候,是否有区别优化?

  • 《Ruby原理剖析》里面介绍过,each 方法每次迭代都准备一大波对象,执行很多逻辑。而while只需要调整PC指针的值,性能不在一个量级。 具体的细节我得回去翻翻书了。

  • 用 Docker 构建开发环境 at 2018年10月16日

    把第五步how to use 整理成一个脚本,在Dockerfile中用ENTRYPOINT/CMD触发, 再加上一个平滑替换容器的脚本, 就完美了。

  • Z-Score ML里面做数据特征归一化,数学真是无处不在

  • 关于一些基础的语法问题 at 2018年10月10日
    command :add do |c|
      c.action do |global_options,options,args|
        $todo_list.create(args)
      end
    end
    

    等价于:

    command(:add) do |c|
      c.action do |global_options,options,args|
        $todo_list.create(args)
      end
    end
    

    command(:add) 会返回一个方法,后面的代码块是这个方法的"参数"。

  • 你nginx代理静态资源写的是这个:

    location ~*^/app/assets/{
    
    }
    
    

    有这个路径吗?换下下面这个试试:

    location ^~ /assets/{
    
    }
    

    顺便建议在 config/environments/production.rb 加上:

    config.serve_static_files = false # 不让后端处理静态资源请求,可以检测你nginx是否真的代理的静态资源
    
  • 精靈旅社疯狂假期, 精灵旅社精靈旅社 在写入ES时,先全部转化为简体,只存一份。在查询时将所有的繁体转化为简体,再到ES查询,可行?

  • includes 的实现原理与困境 at 2018年08月18日

    实际情况复杂,关联对象取出来后,在渲染时还需要执行很多业务逻辑,而且对象关联可能不止一层。用pluck,可能会有局限而且改造成本高。

  • 技师这个词用的好😂

  • 不是基于统计的??? 楼主能不能大概描述一下核心原理 ? thx

努力走向优雅、简洁、有逻辑地表达。