小编the*_*tor的帖子

方法定义中的 Ruby Splat 运算符占用更多内存

在优化我们的代码库时,我们尝试使用 bang 方法来减少有意义的对象分配,但我们在基准测试中观察到分配的对象数量减少但整体内存大小增加。

复制脚本:

# frozen_string_literal: true

require 'bundler/inline'

gemfile(true) do
  source "https://rubygems.org"

  git_source(:github) { |repo| "https://github.com/#{repo}.git" }

  gem 'benchmark-memory', '0.1.2'
end

require 'benchmark/memory'

def with_bang(*methods)
  methods.tap(&:flatten!)
end

def without_bang(*methods)
  methods.flatten
end


Benchmark.memory do |x|
  x.report("with_bang") { with_bang(:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :l, :m, :n, :o) }
  x.report("without_bang") { without_bang(:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :l, :m, :n, :o) }
  x.compare!
end


# Output
# Ruby version: ruby 2.7.2p137 …
Run Code Online (Sandbox Code Playgroud)

ruby memory ruby-on-rails microbenchmark

4
推荐指数
1
解决办法
87
查看次数

在Elixir中嵌套嵌套循环的更好方法

请提出将下面的C代码编写到长生不老药的更好的方法(更多长生不老药的方法)。

int some_num = 0;

for(int i = 0; i < 100; i++){
  for(int j = 0; j < 1000; j++){
    for(int k = 0; k < 10000; k++){
      some_num += 1;
    }
  }
}
printf("%d", some_num);
Run Code Online (Sandbox Code Playgroud)

可以通过获得收益的长生不老药并发来实现它吗?

编辑:有点背景,我对长生不老药仍然学习。该问题的主要动机是编写比应用并发更多的惯用e剂代码。

elixir

0
推荐指数
1
解决办法
166
查看次数

标签 统计

elixir ×1

memory ×1

microbenchmark ×1

ruby ×1

ruby-on-rails ×1