Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中的运行时假设_Ruby_Language Design_Abstraction - Fatal编程技术网

Ruby中的运行时假设

Ruby中的运行时假设,ruby,language-design,abstraction,Ruby,Language Design,Abstraction,Ruby看起来是一种非常酷的语言。在过去的两三天里我已经开始学习了。Ruby吸引我的一点是它的简单性。非常干净的代码是可能的。然而,Ruby的内部实现并不对外公开。我了解到Ruby是根据不同的口味用不同的语言编写的 有一件事让我感到困扰(因为我来自Java背景),那就是内存的使用和速度,因为它的抽象性更强。我只是想听听Ruby用户对此有什么看法。关于内存使用和速度,我的意思是,在Java中,我将决定何时使用ArrayList,何时使用LinkedList,何时使用Hash。我完全了解它们的实现,

Ruby看起来是一种非常酷的语言。在过去的两三天里我已经开始学习了。Ruby吸引我的一点是它的简单性。非常干净的代码是可能的。然而,Ruby的内部实现并不对外公开。我了解到Ruby是根据不同的口味用不同的语言编写的

有一件事让我感到困扰(因为我来自Java背景),那就是内存的使用和速度,因为它的抽象性更强。我只是想听听Ruby用户对此有什么看法。关于内存使用和速度,我的意思是,在Java中,我将决定何时使用ArrayList,何时使用LinkedList,何时使用Hash。我完全了解它们的实现,即使我不知道,我也可以窥探一下它们。但是在Ruby中,它并不简单(我知道它应该是一个高效的实现)。但是,我如何确保我没有过度使用东西呢。例如,当我简单地定义一个数组时会发生什么。它将是一组典型的连续内存位置还是完全不同的实现

另外,用不同语言编写的Ruby遵循所实现的类似算法,或者因语言而异


只是好奇

在部署时,Ruby的内存使用无疑是一个难点。例如,一个开发良好的Rails应用程序(在术语的两种含义中:1)使用最佳实践开发,2)使用广泛的Rails应用程序将“乐意”在其部署的系统上占用超过256mb的空间。但是你可以从中得到非常有用的语法糖。这就是“善”对“恶”的区别

我不太关心Ruby如何存储
数组
对象,就像您的例子一样。即使是一个经验丰富的Ruby开发人员,我也不在乎它是如何存储的,因为我假设语言创建者知道如何优化语言,并且做得很好。但是,每次发布都会更快

在应用程序中,有两个地方需要注意内存使用情况:

  • 读取大文件
  • 创建大量对象
如果你要将一个160MB的文件读入你的Ruby程序中,那将占用160MB+的内存

如果创建的对象太多,则每个对象都有自己的内存分配。假设每个对象有16kb。如果你创建了一百万个对象,那就是16000000KB或16GB

小心点


您可能也对它感兴趣。

我已经删除了语言不可知标记,因为这似乎是Ruby特有的。首先,您所说的“Ruby语言”是什么意思?众所周知,Ruby是其他高级语言的抽象版本。说到Ruby语言,我指的是Ruby风格。我知道只有一种Ruby语言。谢谢你纠正了它。