Предположения времени выполнения в Ruby

Ruby смотрит очень прохладный язык. Я начал изучать это для прошлого два три дня. Одной вещью, которая обращается меня в Ruby, является своя простота. Очень чистый код возможен. Однако внутренние реализации Ruby не выставляются внешнему миру. Я узнал, что Ruby записан на различных языках в зависимости от разновидностей.

Одной вещью, которая прослушивает меня (так как я происхожу из среды Java) является использование памяти и скорость из-за ее более сильного уровня Абстракции. Я просто хочу услышать то, что пользователи Ruby должны сказать относительно этого. Использованием памяти и скоростью, я имею в виду в Java, который я решу, когда пойти для ArrayList, когда пойти для LinkedList, когда пойти для Хеша. Я знаю их реализации полностью, даже если я не делаю, я могу посмотреть в них. Но в Ruby, не простой (я знаю, это должно быть эффективное внедрение). Но, как я буду уверен, что не злоупотребляю вещи. Например, что происходит, когда я просто определяю массив. Будет им типичный набор последовательных ячеек памяти или другой реализации в целом?

Плюс, Ruby, записанный на различных языках, следует подобным реализованным алгоритмам, или он отличается для языков.

Просто любопытный...

1
задан bragboy 26 May 2010 в 07:02
поделиться

1 ответ

Использование памяти Ruby определенно является проблемой , когда дело доходит до развертывания. Возьмем, к примеру, хорошо разработанное (в обоих значениях термина: 1) разработанное с использованием лучших практик и 2) обширное) приложение Rails «с радостью» заняло бы более 256 МБ в системе, в которой оно развернуто. Но с ним вы получаете весь этот довольно полезный синтаксический сахар. Это «добро» по отношению к «злу».

Меня бы не слишком беспокоило, как Ruby хранит объект Array , как это было в вашем примере. Даже как опытный разработчик Ruby меня не волнует, как он хранится, потому что я предполагаю, что создатели языка знали, как оптимизировать язык, и сделали это хорошо. Но каждый выпуск быстрее.

На ум приходят два места, в которых следует проявлять осторожность при использовании памяти в приложении:

  • Чтение больших файлов
  • Создание большого количества объектов

Если вы собираетесь читать файл размером 160 МБ в вашу программу Ruby, это будет занято 160 МБ + памяти.

Затем, если вы создаете слишком много объектов, каждый объект будет иметь собственное выделение памяти. Допустим, это 16 КБ на объект. Если вы создаете миллион объектов, это 16 000 000 КБ или 16 ГБ.

Будьте осторожны!

Вас также может заинтересовать этот удобный инструмент .

2
ответ дан 3 September 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: