Есть ли причины для производительности предпочитать размер по длине или количеству в Ruby? - PullRequest
0 голосов
/ 26 ноября 2018

In Руководство по стилю Ruby от Airbnb гласит:

Предпочитайте size вместо length или count из соображений производительности.

Что бы это было?

1 Ответ

0 голосов
/ 26 ноября 2018

Это кажется немного неправильным, для наиболее часто используемых случаев (Array, Hash, String), size и length являются либо псевдонимами, либо реализованы одинаково (вы можете прочитать больше здесь или проверьте реализацию каждого метода) и будет работать в O(1).

count однако:

  • Для Hash не переопределенои отступит до Enumerable#count, что означает, что его сложность будет O(n), так как все значения ключа будут пройдены.
  • Для Array оно переопределено (Array#count) и, по крайней мере, он проверит количество приведенных аргументов, что не нужно ни Array#size, ни Array#length.
  • для String используется для подсчета подстрок.

В целом, я бы сказал, что

Предпочитают size или length над count по соображениям производительности.

будет более точным.

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