Расширения Ruby C, Использовать типы данных Ruby или собственный C для производительности? - PullRequest
2 голосов
/ 24 декабря 2009

Я сейчас пишу расширение C для ruby ​​как часть моего проекта. Расширение заключается в реализации алгоритма, который я уже работал в ruby ​​в C по соображениям производительности. Однако я задаю вопрос: следует ли мне использовать собственные типы данных ruby ​​в коде C или преобразовывать их в собственные типы C для повышения производительности?

Будет ли такое преобразование иметь огромное значение?

Заранее спасибо

Patrick

Ответы [ 4 ]

3 голосов
/ 24 декабря 2009

В принципе, ваш фрагмент кода C должен использовать структуры данных C для более быстрой работы. Насколько быстрее он будет выполняться, зависит от того, сколько данных будут содержать структуры данных (и сколько раз фрагмент кода C будет проходить через них).

Чем больше данных проходит, тем больше вы заметите снижение производительности при использовании собственных структур данных C.

0 голосов
/ 26 декабря 2009

Хорошие ответы. Я бы только предложил, что бы вы ни делали, вы оборачиваете вокруг него временную петлю 10 ^ 3 или 10 ^ 6 раз и настраиваете дневные лучи из нее, затем удаляете внешнюю петлю. Вот пример того, что я имею в виду. То, что он написан на C, не гарантирует, что он будет настолько быстрым, насколько это возможно.

0 голосов
/ 25 декабря 2009

Используйте типы данных Ruby, только если вам нужен доступ к этим данным из Ruby.

0 голосов
/ 24 декабря 2009

Для максимальной производительности, я думаю, лучше переписать ее полностью на C и просто поддерживать минимальный уровень связывания Ruby-C (структуры данных и вызовов Ruby C API) между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...