• 参攷 2.6.0 Release News 的性能提升章节

    • 由于移除了对 $SAFE 临时赋值的支持,提升 Proc#call 的速度。[功能 #14318]

    通过 lc_fizzbuzz 多次使用 Proc#call 的 benchmark 我们测量到了 1.4 倍性能提升 [漏洞 #10212]

    • 提升了当 block 是代码块参数时 block.call 的性能。[功能 #14330]

    通过与 Ruby 2.5 中引入的提升代码块传递的性能的方法结合,Ruby 2.6 进一步提升了传递代码块调用时的性能。通过 micro-benchmark 我们观察到了 2.6 倍性能提升。[功能 #14045]

    瞬态堆是用于管理指向特定类(Array、Hash、Object 和 Struct)短生命周期内存对象的堆。例如,创建小而短生命周期的哈希对象的速度提升到了 2 倍快。根据 rdoc benchmark,我们观察到了 6% 到 7% 的性能提升。

    • 协程采用了原生实现(arm32arm64ppc64lewin32win64x86amd64)显著提升了 Fiber 的性能。 [功能 #14739]

    Fiber.yieldFiber#resume 方法在 64 位 Linux 上提升了 5 倍性能。对于使用 Fiber 密集的程序,约有最高 5% 的性能提升。

    这些提升都不是 JIT 带来的,Ruby 2.0 以来的每个大版本都有类似的性能优化。

  • 装个旧版本的 Virtualbox,再在里面跑 Linux(逃

  • 这样递减的 sql 怎么写 at 2018年12月31日

    这个基本上和财务数据的逻辑是一致的,是一个类似单向(qu)链(kuai)表(lian)的结构。中间有一个节点变化,至少会引起之后所有的数据都必须要重算。最坏的情况是变更第一个值,就不得不触发全表重建。

  • 这样递减的 sql 怎么写 at 2018年12月31日

    这样的查询适合单独存一张表吧,否则的话,每次做一定是扫全表,时间复杂度是 O(n+m),放在数据库里做好像没有什么意义啊。

  • 这样递减的 sql 怎么写 at 2018年12月31日

    还是没懂,你要不要列一下计算过程

  • 这样递减的 sql 怎么写 at 2018年12月31日

    是说 A 的 id 是主键,B 的 id 是 A 的外键。然后 n 是初始值,m 是每次 action 的消耗。d 返回经过每次消耗后的剩余的集合?

  • 不知道为什么我一访问 Edit Profile 页面就直接 302 回主页了,看来等会要回报 bug。

  • Ruby 2.6.0-rc1 已发布 at 2018年12月19日

    在关注 AutoFiber 和 Guild 的发展情况。。。如果 AutoFiber 被实现得很好的话就没什么价值了。如果 AutoFiber 有一些问题,特别是现在可能和 Guild 冲突。而 Midori 可以依赖 Guild 实现更复杂的多核异步模型的话,速度会再快几倍。但现在这俩玩意的状态我也看不太懂,所以也不知道怎么弄了。。。

  • 关于开源代码的事 at 2018年12月15日

    源代码放出来只是让你看,并不能让你用。就像别人放在那里的芒果,你不能寻思是别人不要了吧。

    代码是不是开源,需要取决于使用什么授权协议。哪怕是 GPL 的 RedHat 也有卖商业服务的。

    如果人家没有设定任何授权协议的话,那就只能默认是 Copyright 私有了。