2014-02-21 3 views
7

В некоторых языках высокого уровня, таких как Matlab, вы можете использовать «логическую индексацию» для выбора целого набора записей в массиве для работы.Как работает логическая индексация?

Я понимаю, что логическая индексация является и как использовать его.

Вместо этого, я спрашиваю:

  • Как работает она ("за кулисами")?
  • Разве это не сводится только к петле?
  • Если да, то почему это намного быстрее, чем для-петлирования?
+5

Для третьей части: хотя Matlab, вероятно, использует цикл внутри, эти «внутренние» циклы намного быстрее (в Matlab), чем явный цикл с использованием 'for' или аналогичной функции Matlab –

+0

@ M.P. что мотивирует этот вопрос? – Frederick

+2

@Frederick - чисто любопытство. – cmo

ответ

3

Интерпретированные языки можно рассматривать как вариации на ассемблере, работающем на эмулированном ядре. У них есть стеки и команды, которые работают так же, как ассемблер, фактически не будучи ассемблером. Это виртуальная машина.

Цикл for можно рассматривать как указание системе, задание значения, выполнение последовательности задач, а когда вы закончите, вернитесь и проверьте это значение. Если он не находится на пороге, измените его в установленном порядке и повторите эти задачи и вернитесь. В ассемблере вы бегаете быстро, но в «ВМ» не так много. Рассмотрим демонстрацию между 13:50 и 15:30 по этой ссылке: (link)

Это означает, что то, что кажется циклом for, на самом деле не является циклом for. Это прерывания операционной системы и виртуальная память. Это вирус-сканирование в фоновом режиме и мегазвезда.

Если у вас была виртуальная система, вы могли бы сделать короткое сокращение для адресации памяти, которая не использовала виртуализированный цикл, что было достаточно эффективным? MatLab пытается справиться с обработкой данных, поэтому он должен иметь очень эффективные способы хранения, сортировки и выбора данных на своей виртуальной машине.

MathWorks не собирается предоставлять информацию об этом доступной для общественности. Если у него отличная идея, они не хотят, чтобы он реализовывался в Python и R завтра. Если у него есть посредственная идея, то они не хотят, чтобы их били в исполнении Python и R завтра. В любом случае, делая орехи и болты этого конкретного подхода доступными для общественности без NDA - это, скорее всего, потерянное предложение для них.

Нижние линии:

  • его не настоящий «за», даже для цикла, потому что его работы практически
  • они открывают некоторые из внутренностей их обработки данных для повышения удобства использования
  • они не могут раскрывать фактический код из-за негативных последствий бизнеса

Стоит отметить, что векторизованную код может опережать для петель, делая то же самое THI нг. Это означает, что они, скорее всего, применяют больше этих внутренних компонентов для выполнения «последовательности задач» для повышения производительности.

Смежные вопросы