Когда вы должны использовать XS?

Я пишу доклад по XS, и мне нужно знать, когда сообщество считает, что это правильно - обратиться к XS.

2 ответа

Решение

Я могу придумать как минимум три причины использовать XS:

  1. У вас есть библиотека C, к которой вы хотите получить доступ в Perl 5
  2. У вас есть блок кода, который заметно замедляет вашу программу и будет быстрее, если он будет написан на C
  3. Вам нужен доступ к тому, что доступно только в XS

Причина 1 очевидна и не нуждается в объяснении.

Когда вам действительно нужна причина 2, это менее очевидно. Часто вам лучше посмотреть, как структурирован код. Вы должны вызывать причину 2 только в том случае, если вы профилировали свой код и имеете набор тестов и тестов, чтобы доказать, что код XS быстрее и правильнее.

Причина 3 - опасная причина. Редко когда вам действительно нужно посмотреть в Perl, чтобы что-то сделать, но есть хотя бы один действительный случай.

В некоторых случаях лучшее управление памятью является еще одной причиной использования XS. Например, если у вас очень большой блок объектов похожего типа, этим можно управлять более эффективно с помощью XS. KinoSearch использует это для токенов, например, когда начальные и конечные смещения в большой строке могут управляться более эффективно через XS, чем в виде огромного пула скаляров. PDL также имеет аспект управления памятью, а также скорость.

Существуют предложения по интеграции некоторых из этого подхода в ядро ​​Perl в долгосрочной перспективе, первоначально потому, что он дает возможность улучшить обмен данными в потоке: см.: http://openparallel.com/2011/07/05/a-new. надежда на эффективный, безопасный обмен данными между потоками в perl /.

Другие вопросы по тегам