Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
Jasl
@jasl
管理员
第 1107 位会员 / 2012-02-21

[email protected]
北京
125 篇帖子 / 3953 条回帖
395 关注者
11 正在关注
82 收藏
Ass♂we♂can
GitHub Public Repos
  • wx_pay 461

    An unofficial simple wechat pay gem

  • zk_dcap_verifier_poc 1

  • substrate 0

    Substrate: The platform for blockchain innovators

  • parity-common 0

    Collection of crates used in Parity projects

  • polkadot-sdk 0

    The Parity Polkadot Blockchain SDK

  • pjs-rs 0

    A javascript runtime with pjs embebed

  • agave 0

    Web-Scale Blockchain for fast, secure, scalable, decentralized apps and marketplaces.

  • ngine 0

    A nostr application framework

  • derive_more 0

    Some more derive(Trait) options

  • cybros-experimental 0

More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • FlowCore - SaaS 快速开发套件之工作流引擎 at 2020年08月17日

    😂

  • RubyConf China 2020 SSR 参会指南 at 2020年08月17日

    YouTube 上两天的都有了,https://www.youtube.com/channel/UCOLKFS_uA7nX26_u8z9V9og 这里找一下

    按演讲来剪辑的录像,还有上传到国内平台,可能要等等,顺利下周。

  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月17日

    我不觉得这是扣帽子,你没有拿出证据证明这里有瓶颈,谈何优化?况且我不觉得你的态度很友善

    为什么要我去理解你的情况和语境?表述不清楚是你的错,不是我的错

    Ruby 的引用和 Java 的引用并无二致,编程语言上的“引用”的理解都是一样的,如果你认为概念有别,那么是你对引用的理解有误区。

    Ruby 只有引用,这个是语言定义上就明确提到的

  • RubyConf China 2020 SSR 参会指南 at 2020年08月16日

    周六的应该 YouTube 上可以看的,今天组委会在活动结束后全扑街了,等明天睡醒再搞今天的吧。国内平台要晚一些了,再之后会按场次分开上传

  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月16日

    题外话,Ruby 有 WeakRef

  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月16日

    那么优化性能难道不是以 事实 存在性能瓶颈为前提进行的吗?

  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月16日

    a 和 b 指向同一个对象,请问“拷贝”发生在哪里?

  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月16日

    Ruby 不存在 值 这个概念,我不知道你说的值拷贝在 Ruby 上会是什么样子

  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月16日

    我们再来看看是否如你所说产生了大量的小对象

    n = 100_000
    index = n / 2
    
    GC.disable
    
    puts "Checkpoint 1"
    pp ObjectSpace.count_objects
    
    arr = 1.upto(n).to_a
    arr.index(index)
    
    puts "Checkpoint 2"
    pp ObjectSpace.count_objects
    
    arr1 = arr[2..]
    arr1.index(index)
    
    puts "Checkpoint 3"
    pp ObjectSpace.count_objects
    

    注意为了避免 irb 的干扰(语句打印到控制台会产生大量对象)语句这段代码要么保存成文件执行,要么用 eval 来执行

    另外注意,我们在代码里关闭了 GC,也就是说产生的任何对象,都不会被回收

    Checkpoint 1
    {:TOTAL=>48914,
     :FREE=>3078,
     :T_OBJECT=>2032,
     :T_CLASS=>998,
     :T_MODULE=>76,
     :T_FLOAT=>4,
     :T_STRING=>23003,
     :T_REGEXP=>323,
     :T_ARRAY=>4881,
     :T_HASH=>274,
     :T_STRUCT=>1000,
     :T_BIGNUM=>2,
     :T_FILE=>5,
     :T_DATA=>567,
     :T_MATCH=>248,
     :T_COMPLEX=>1,
     :T_SYMBOL=>58,
     :T_IMEMO=>12265,
     :T_ICLASS=>99}
    Checkpoint 2
    {:TOTAL=>49321,
     :FREE=>303,
     :T_OBJECT=>2161,
     :T_CLASS=>1016,
     :T_MODULE=>78,
     :T_FLOAT=>4,
     :T_STRING=>24893,
     :T_REGEXP=>323,
     :T_ARRAY=>5357,
     :T_HASH=>284,
     :T_STRUCT=>1002,
     :T_BIGNUM=>2,
     :T_FILE=>7,
     :T_DATA=>615,
     :T_MATCH=>248,
     :T_COMPLEX=>1,
     :T_SYMBOL=>58,
     :T_IMEMO=>12867,
     :T_ICLASS=>102}
    Checkpoint 3
    {:TOTAL=>49729,
     :FREE=>167,
     :T_OBJECT=>2290,
     :T_CLASS=>1016,
     :T_MODULE=>78,
     :T_FLOAT=>4,
     :T_STRING=>25066,
     :T_REGEXP=>323,
     :T_ARRAY=>5512,
     :T_HASH=>286,
     :T_STRUCT=>1003,
     :T_BIGNUM=>2,
     :T_FILE=>7,
     :T_DATA=>656,
     :T_MATCH=>248,
     :T_COMPLEX=>1,
     :T_SYMBOL=>58,
     :T_IMEMO=>12910,
     :T_ICLASS=>102}
    

    观察结果,并没有产生大量的元素复制,假设证伪。

  • 发现了一个 Rails 书写规范分享下 at 2020年08月16日

    现在用 rubocop 或者 https://github.com/testdouble/standard 这些 linting 工具解决就是了

  • 请大佬推荐一些介绍 CRuby 实现的材料,感激不尽 at 2020年08月16日

    就 each_char 为例,文档已经关联了对应的源代码 https://ruby-doc.org/core-2.4.0/String.html#method-i-each_char 自己追就可以了

  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月16日

    反驳的点是 他认为 b = a 是值拷贝,事实上 Ruby 不存在值语义, 换 Float 结果依旧成立

    2.7.1 :027 > a = 1.1
    2.7.1 :028 > a.object_id
     => -32425917317067566
    2.7.1 :029 > b = a
    2.7.1 :030 > b.object_id
     => -32425917317067566
    
  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月16日

    此外

    ruby 中有值和引用语义

    这句话明显也是错的,Ruby 语言已经明确了只存在引用,就你以 Integer 的例子,证伪很容易

    2.7.1 :021 > a = 1
    2.7.1 :022 > a.object_id
     => 3
    2.7.1 :023 > b = a
    2.7.1 :024 > b.object_id
     => 3
    

    a 和 b 都指向同一个 Integer 对象,并没有发生值拷贝

    你对 b = a 的理解也有误区,他的意思是将 a 指向的对象 binding(绑定)到 b 上。

  • 感觉 Ruby 缺少显式创建引用的功能,有没有大佬可以给核心开发者建议添加一下 at 2020年08月16日

    就你的例子而言,我们做一个测试

    require 'benchmark'
    
    n = 100_000
    arr = 1.upto(n).to_a
    index = n / 2
    
    puts index
    
    Benchmark.bm do |x|
      x.report { 100.times { arr.index(index) } }
      x.report { 100.times { arr[2..].index(index) } }
    end
    

    在 ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19] 上的结果

        user     system      total        real
    0.036552   0.000022   0.036574 (  0.036579)
    0.035222   0.000063   0.035285 (  0.035303)
    
        user     system      total        real
    0.034097   0.000060   0.034157 (  0.034210)
    0.030318   0.000049   0.030367 (  0.030414)
    
        user     system      total        real
    0.039931   0.000083   0.040014 (  0.040158)
    0.035147   0.000157   0.035304 (  0.035333)
    

    后者比前者性能略高(考虑误差性能大致一致)

    换一种 benchmark 做法

    require 'benchmark/ips'
    
    n = 100_000
    arr = 1.upto(n).to_a
    index = n / 2
    
    puts index
    
    Benchmark.ips do |x|
      x.config(time: 10, warmup: 2)
    
      x.report("arr.index(index)") { arr.index(index) }
      x.report("arr[2..].index(index)") { arr[2..].index(index) }
    
      x.compare!
    end
    

    结果

    Warming up --------------------------------------
        arr.index(index)   329.000  i/100ms
    arr[2..].index(index)
                           317.000  i/100ms
    Calculating -------------------------------------
        arr.index(index)      3.486k (± 3.5%) i/s -     34.874k in  10.018586s
    arr[2..].index(index)
                              3.455k (± 1.6%) i/s -     34.553k in  10.002732s
    
    Comparison:
        arr.index(index):     3485.6 i/s
    arr[2..].index(index):     3455.3 i/s - same-ish: difference falls within error
    

    两种写法的性能表现几乎相同(考虑误差)

    结果来看两种写法的性能并无差别,你的假设证伪。

    更新:

    换了 Float 一样成立

    require 'benchmark'
    
    n = 100_000.0
    arr = 1.upto(n).to_a
    index = n / 2
    
    puts index
    
    Benchmark.bm do |x|
      x.report { 100.times { arr.index(index) } }
      x.report { 100.times { arr[2..].index(index) } }
    end
    
        user     system      total        real
    0.196415   0.000087   0.196502 (  0.196542)
    0.188249   0.000104   0.188353 (  0.188391)
    
  • RubyConf China 2020 SSR 参会指南 at 2020年08月14日

    更新了有奖互动相关的信息

  • RubyConf China 2020 SSR 参会指南 at 2020年08月14日

    更新了几件 T 恤图案的渲染图~

  • RubyConf China 2020 SSR 参会指南 at 2020年08月13日

    更新了自动加入参会群的二维码~

  • RubyConf China 2020 SSR 参会指南 at 2020年08月13日

    没 不过群里有发设计稿,我看看能不能把图案放到这里来。

    因为这个周边制作有点特殊性,目前还没做样子

  • RubyConf China 2020 SSR 参会指南 at 2020年08月13日

    已改

  • RubyConf China 2020 SSR 参会指南 at 2020年08月13日

    😂 这已经拖延症晚期,再不发就不用发了...

  • Rails 没落了吗?为什么我们的社区如此冷清? at 2020年07月05日

    说来小扎的基金会网站也是 Rails 写的...

  • 使用 Capistrano 部署,时间超长,原因是什么? at 2020年06月29日

    编译前端资源很消耗 CPU 的,我记得有 Cap 的 recipe 在本地编译传到服务器的

  • Hash[*Array] 堆栈太深?? at 2020年06月29日

    热心的群友已经解答了问题:https://stackoverflow.com/questions/33066859/why-am-i-getting-the-error-stack-level-too-deep-systemstackerror-when-hashin

    The parameters are passed on the stack. If there are too many parameters, you'll exhaust stack space and get the mentioned error.

  • Twitter 上被 Hey 刷屏了 at 2020年06月18日

    据说 Hey 的技术成果过阵子要回馈社区,Turbolinks 6、Stimulus 2 还有 Rails 的一些组件

  • 问一问大家,二次开发 Redmine 系统,有什么开发工具推荐吗?(Windows) at 2020年06月14日

    Redmine 的样式还是上个世纪的思路,就用浏览器调试器来做就好了...

  • 为 FlowCore 添加了高层工作流抽象 at 2020年06月10日

    好吧,我申请个 up 主去

  • 为 FlowCore 添加了高层工作流抽象 at 2020年06月10日

    蛋疼... 那有啥地方上传视频比较方便的...

  • 为 FlowCore 添加了高层工作流抽象 at 2020年06月09日

    发了个推展示一下 Dummy App 可以做到的效果

    https://twitter.com/jasl9187/status/1270304483923259393

    有空还可以搞一下表单字段的访问控制(FormCore 本来就有的功能)、会签、动态指派

  • 为 FlowCore 添加了高层工作流抽象 at 2020年06月06日

    加油!!!!!!!!!!!!!!!!!

  • rails 框架装不上 at 2020年05月26日

    如果没装烂七八糟常驻的程序的话,很可能是电池老化,这个很正常,可以自己搜一下怎么看电池健康度,如果过低花钱换(在保的话,低于 85% 是免费更换的)

  • 上一页
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • …
  • 120
  • 121
  • 下一页
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English