Ruby需要增加一倍的RAM

时间:2014-04-19 21:04:07

标签: ruby

我正在尝试使用我的本地服务器,然后编写了一个小程度的ruby程序来填充RAM。但实际上我必须将要放入RAM的字节数减半。我在这里遗漏了什么或这是一个错误吗?

这里是代码:

class RAM

  def initialize
    @b = ''
  end

  def fill_ram(size)
    puts 'Choose if you want to set the size in bytes, megabytes or gigabytes.'
    answer = ''
    valid = ['bytes', 'megabytes', 'gigabytes']
    until valid.include?(answer)
      answer = gets.chomp.downcase
      if answer == 'bytes'
        size = size * 0.5
      elsif answer == 'megabytes'
        size = size * 1024 * 1024 * 0.5
      elsif answer == 'gigabytes'
        size = size * 1024 * 1024 * 1024 * 0.5
      else
        puts 'Please choose between bytes, megabytes or gigabyte.'
      end
    end
    size1 = size
    if @b.bytesize != 0
      size1 = size + @b.bytesize
    end
    until @b.bytesize == size1
      @b << '0' * size
    end
    size = 0
  end

  def clear_ram
    exit
  end

  def read_ram
    puts 'At the moment this program fills ' + @b.bytesize.to_s + ' bytes of RAM'
  end

end

想象一下,每行的"* 0.5"都不会存在。

我在IRB中测试了它,只是创建了一个新的RAM对象,并用1000兆字节的数据填充它。在我的情况下,它实际上填充了2000兆字节的数据,所以我确实为每一行添加了0.5次,但这不是解决方案。

1 个答案:

答案 0 :(得分:3)

当我跑步时,我得到:

Choose if you want to set the size in bytes, megabytes or gigabytes.
bytes
At the moment this program fills 512 bytes of RAM

我认为问题是缺少对编码的检查。

我用US-ASCII(一个字符= 1个字节)运行我的测试。

如果您使用UTF-16运行它,则可以解释您的问题。

您可以尝试以下代码来检查您的编码:

p Encoding.default_internal 
p Encoding.default_external

阅读评论后:

脚本的结果取决于RAM.fill_ram的参数。你如何开始你的剧本 - 你多久打电话给RAM.fill_ram

请提供完整的代码。

我用

打电话给我的例子
r = RAM.new
r.fill_ram(1024)
r.read_ram