• 不是这样运行的啊...

    Ruby 是先从源文件编译到字节码, 再解释字节码执行. 这是可以分离执行的, 就和 javac 然后 java 一样. 平时为了方便不分离而已.

  • 你这样 benchmark 不公平啊, 对 Ruby 计算了编译时间, 对 Go 却忽略了编译时间.

    要么都算, 要么都不算.

    你可以参考下 https://benchmarksgame.alioth.debian.org/ 网站的 benchmark, 里面的 Ruby 程序都是预编译好 (编译成 .yarv), 并且程序跑的时间足够长, 让编译时间影响更小甚至不计编译时间的

  • 你这比较的事情也不一样, ruby fib.rb 做的事情还包括编译和载入 Ruby 运行时, 和 go 比你要把 go build 的时间加在一起.

    当然了, 算 fib 100000 还是这样快:

    require 'matrix'
    def fib n
      m = Matrix[[0, 1], [1, 1]] ** n
      v = m * Vector[0, 1]
      v[1]
    end
    
    t = Time.now
    fib 100000
    puts Time.now - t
    
  • 这么说用 Ruby 也可以比 Go 快十倍...

    a, b = 0, 1
    40.times { a, b = b, a+b }
    puts a
    

    0.07s user 0.04s system 90% cpu 0.116 total

  • Ruby 2.5 中的 yield_self at 2018年01月17日

    呃, 具体的问题是啥? 有的话可以另开一帖

  • "#{1.2355236.round 6}"
    
  • Ruby 2.5 中的 yield_self at 2018年01月16日

    这是不是误解了它的作用?

    它是为了提高一行解决问题的用完即弃的命令行脚本的编写效率.

    写完一段代码后, 突然想到它应该作为一个参数, 那么你不用 ctrl + A 回到行首插入调用函数再 ctrl + E 到行末补上括号, 你只要 yield_self 继续往右写即可, 就这样...

  • 没用过 ik... 不用在 mapping 里指定 analyzer 吗?

    据说现在都不用分词了, 用 ngram 搜索, 靠打分排序更好...

  • 前后端分裂 at 2018年01月08日

    公司架构反正都会映射到代码结构, 所以最终还是公司架构不合理 ...

    如果多个部门或者团队都要找点事情来避免自己被边缘化, 而且都会想找容易吃的蛋糕, 所以很简单的蛋糕会因为多部门的争夺而被割裂成复杂的服务 越好吃的蛋糕, 也就是看起来越简单的事情, 越会这样

  • 命令行 ri Object 或者 ri Object.instance_variable_get