Разница между расширениями JavaScript и плагинами NPAPI в отношении производительности - PullRequest
1 голос
/ 16 февраля 2012

Я написал плагин NPAPI без окон, который связывается с общей библиотекой для доступа к моим собственным ресурсам. Плагин загружается веб-приложением, запущенным в браузере Firefox. Недавно я увидел в сети, что с помощью расширений Java Script можно также выполнять вызовы функций собственного кода. Но эти расширения Java Script характерны для браузеров.

Может ли кто-нибудь сказать мне, что если я буду использовать расширение Java Script вместо плагина NPAPI для вызова собственного кода, будет ли какое-либо улучшение производительности с точки зрения задержки при выполнении вызовов API нативной библиотеки?

Пожалуйста, обратите внимание: мой запрос является общим и не предназначен специально для браузера Firefox.

1 Ответ

1 голос
/ 17 февраля 2012

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

Firefox : нативную библиотеку можно вызвать через js-ctypes . Этот механизм должен быть более легким, чем связь с плагином NPAPI. Что еще более важно, у вас нет накладных расходов на межпроцессное взаимодействие (более новые версии Firefox запускают плагины в отдельных процессах).

Chrome : AFAIK единственный способ получить доступ к функциональности операционной системы (такой как запись файлов в произвольное место на диске) через NPAPI, Chrome не позволяет расширениям использовать системные библиотеки. Однако, если вы используете собственную библиотеку только для ускорения выполнения и не возражаете против запуска этого кода в песочнице - собственный клиент может работать для вас. Из-за изолированного выполнения он, вероятно, будет медленнее, чем плагин NPAPI, но не будет вызывать страшных предупреждений при установке вашего расширения.

Safari : Насколько я знаю, Safari не позволяет использовать нативные библиотеки, даже через плагины NPAPI .

Internet Explorer : Начиная с MSIE 9.0, Internet Explorer до сих пор не имеет ничего похожего на расширения на основе JavaScript.

...